[virt-tools-list] [PATCH virt-viewer] Fix regression with enabling additional displays

Marc-André Lureau mlureau at redhat.com
Mon Mar 31 11:34:38 UTC 2014


ack

----- Original Message -----
> This patch still needs review.  Any takers?
> 
> 
> 
> ----- Original Message -----
> > From: "Jonathon Jongsma" <jjongsma at redhat.com>
> > To: virt-tools-list at redhat.com
> > Sent: Friday, March 14, 2014 3:45:21 PM
> > Subject: [virt-tools-list] [PATCH virt-viewer] Fix regression with enabling
> > 	additional displays
> > 
> > Commit 8fa942 broke enabling of additional displays. We don't want to send
> > down
> > display re-configurations due to events that happen while setting up
> > windows
> > for
> > enabled displays that we recieve from the server. However, by ignoring
> > allocations on unmapped windows, we fail to send display configurations for
> > new
> > displays that a user is attempting to enable via the window menu. To
> > discriminate between these two cases, we check whether the display is in
> > the
> > 'ready' state or not.
> > - Unmapped displays with the 'ready' hint set can be assumed to be displays
> >   that are enabled on the server that we are attempting to create windows
> >   for
> >   on
> >   the client. In this case, we should *not* send a display configuration to
> >   the
> >   server
> > - Unmapped displays with the 'ready' hint cleared can be assumed to be
> > displays
> >   that are not yet enabled on the server that we are trying to enable in
> >   the
> >   client. In this case, we *should* send a display configuration to the
> >   server
> > ---
> >  src/virt-viewer-display-spice.c | 36 ++++++++++++++++++++----------------
> >  1 file changed, 20 insertions(+), 16 deletions(-)
> > 
> > diff --git a/src/virt-viewer-display-spice.c
> > b/src/virt-viewer-display-spice.c
> > index c44dfcb..76dfb47 100644
> > --- a/src/virt-viewer-display-spice.c
> > +++ b/src/virt-viewer-display-spice.c
> > @@ -189,22 +189,26 @@
> > virt_viewer_display_spice_size_allocate(VirtViewerDisplaySpice *self,
> >                                          gpointer data G_GNUC_UNUSED)
> >  {
> >      GtkRequisition preferred;
> > -
> > -    /* ignore all allocations before the widget gets mapped to screen
> > since
> > we
> > -     * only want to trigger guest resizing due to user actions
> > -     */
> > -    if (!gtk_widget_get_mapped(GTK_WIDGET(self)))
> > -        return;
> > -
> > -    /* when the window gets resized due to a change in zoom level, we
> > don't
> > want
> > -     * to re-size the guest display.  So if we get an allocation event
> > that
> > -     * resizes the window to the size it already wants to be (based on
> > desktop
> > -     * size and zoom level), just return early
> > -     */
> > -    gtk_widget_get_preferred_size(GTK_WIDGET(self), NULL, &preferred);
> > -    if (preferred.width == allocation->width
> > -        && preferred.height == allocation->height) {
> > -        return;
> > +    guint hint =
> > virt_viewer_display_get_show_hint(VIRT_VIEWER_DISPLAY(self));
> > +
> > +    if (hint & VIRT_VIEWER_DISPLAY_SHOW_HINT_READY)
> > +    {
> > +        /* ignore all allocations before the widget gets mapped to screen
> > since we
> > +         * only want to trigger guest resizing due to user actions
> > +         */
> > +        if (!gtk_widget_get_mapped(GTK_WIDGET(self)))
> > +            return;
> > +
> > +        /* when the window gets resized due to a change in zoom level, we
> > don't want
> > +         * to re-size the guest display.  So if we get an allocation event
> > that
> > +         * resizes the window to the size it already wants to be (based on
> > desktop
> > +         * size and zoom level), just return early
> > +         */
> > +        gtk_widget_get_preferred_size(GTK_WIDGET(self), NULL, &preferred);
> > +        if (preferred.width == allocation->width
> > +            && preferred.height == allocation->height) {
> > +            return;
> > +        }
> >      }
> >  
> >      if (self->priv->auto_resize != AUTO_RESIZE_NEVER)
> > --
> > 1.8.5.3
> > 
> > _______________________________________________
> > virt-tools-list mailing list
> > virt-tools-list at redhat.com
> > https://www.redhat.com/mailman/listinfo/virt-tools-list
> > 
> 
> _______________________________________________
> virt-tools-list mailing list
> virt-tools-list at redhat.com
> https://www.redhat.com/mailman/listinfo/virt-tools-list
> 




More information about the virt-tools-list mailing list