[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