[Spice-devel] [PATCH spice-server] red_worker: Do not sent empty monitor config message
Pavel Grunt
pgrunt at redhat.com
Tue Oct 6 02:18:56 PDT 2015
On Mon, 2015-10-05 at 18:39 +0200, Christophe Fergeau wrote:
> On Thu, Oct 01, 2015 at 05:19:23PM +0200, Pavel Grunt wrote:
> > Resolves:
> > https://bugzilla.redhat.com/show_bug.cgi?id=1061942
> > ---
> > server/red_worker.c | 10 ++++++----
> > 1 file changed, 6 insertions(+), 4 deletions(-)
> >
> > diff --git a/server/red_worker.c b/server/red_worker.c
> > index e2feb23..a106923 100644
> > --- a/server/red_worker.c
> > +++ b/server/red_worker.c
> > @@ -9144,7 +9144,6 @@ static void
> > red_marshall_monitors_config(RedChannelClient *rcc, SpiceMarshaller
> > SpiceMsgDisplayMonitorsConfig *msg = spice_malloc0(sizeof(*msg) +
> > heads_size);
> > int count = 0; // ignore monitors_config->count, it may contain zero
> > width monitors, remove them now
> >
> > - red_channel_client_init_send_data(rcc,
> > SPICE_MSG_DISPLAY_MONITORS_CONFIG, NULL);
> > for (i = 0 ; i < monitors_config->count; ++i) {
> > if (monitors_config->heads[i].width == 0 || monitors_config-
> > >heads[i].height == 0) {
> > continue;
> > @@ -9157,9 +9156,12 @@ static void
> > red_marshall_monitors_config(RedChannelClient *rcc, SpiceMarshaller
> > msg->heads[count].y = monitors_config->heads[i].y;
> > count++;
> > }
> > - msg->count = count;
> > - msg->max_allowed = monitors_config->max_allowed;
> > - spice_marshall_msg_display_monitors_config(base_marshaller, msg);
> > + if (count > 0) {
> > + red_channel_client_init_send_data(rcc,
> > SPICE_MSG_DISPLAY_MONITORS_CONFIG, NULL);
> > + msg->count = count;
> > + msg->max_allowed = monitors_config->max_allowed;
> > + spice_marshall_msg_display_monitors_config(base_marshaller, msg);
> > + }
> > free(msg);
> > }
>
> Do you know why we get this empty monitors config from the guest in the
> first place?
>
Hi Christophe,
It is happening when shutting down a VM (when its graphical session finished).
But we don't get an empty monitors config message, we (spice server) make it.
The original message just contains zero width & height monitors. These "zero
size monitors" are filtered out, and we send the message w/o them, so it is
empty. I don't know why it is necessary to filter these "zero size monitors".
I try removing the filter, it also worked.
Pavel
More information about the Spice-devel
mailing list