Hm, indeed, but what about relying on the actual state of fullscreen within _resize() instead of relying on this flag for that behavior. The following additional patch seems more correct to me: @@ -198,7 +240,7 @@ virt_viewer_display_spice_resize(VirtViewerDisplaySpice *sel if (virt_viewer_display_get_show_hint(VIRT_VIEWER_DISPLAY(self)) & VIRT_VIE return; - if (self->priv->auto_resize == AUTO_RESIZE_ONCE) { + if (virt_viewer_display_get_fullscreen(VIRT_VIEWER_DISPLAY(self))) { GdkRectangle monitor; GdkScreen *screen = gtk_widget_get_screen(GTK_WIDGET(self)); int n = virt_viewer_display_get_monitor(VIRT_VIEWER_DISPLAY(self)); ----- Original Message ----- > From: "Marc-André Lureau" <marcandre.lureau@xxxxxxxxx> > To: "Jonathon Jongsma" <jjongsma@xxxxxxxxxx> > Cc: "Marc-André Lureau" <mlureau@xxxxxxxxxx>, "virt" <virt-tools-list@xxxxxxxxxx> > Sent: Friday, September 20, 2013 7:25:34 AM > Subject: Re: [PATCH] VirtViewerDisplaySpice: rename AUTO_RESIZE_FULLSCREEN > > Actually, looking more into this part of the code today, I see that it > uses a different path, specific to fullscreen in resize(). > > AUTO_RESIZE_FULLSCREEN does tweak resize code in 2 ways when going > fullscreen: > - use monitor geometry instead of window geometry > - disable further auto resize > > Hence, I think we should keep AUTO_RESIZE_FULLSCREEN. > > Perhaps make AUTO_RESIZE flags, and so it would use FULLSCREEN | ONCE? > I think that makes things more complicated, you'll need more flags for > NEVER, and it's easy to get in inconsistant state, but feel free to > propose a better solution. > > On Thu, Sep 19, 2013 at 8:06 PM, Jonathon Jongsma <jjongsma@xxxxxxxxxx> > wrote: > > Thanks, would you be willing to push it for me? I don't yet have commit > > access. > > > > Jonathon > > > > > > > > ----- Original Message ----- > >> From: "Marc-André Lureau" <mlureau@xxxxxxxxxx> > >> To: "Jonathon Jongsma" <jjongsma@xxxxxxxxxx> > >> Cc: virt-tools-list@xxxxxxxxxx > >> Sent: Thursday, September 19, 2013 12:31:03 PM > >> Subject: Re: [PATCH] VirtViewerDisplaySpice: rename > >> AUTO_RESIZE_FULLSCREEN > >> > >> > >> > >> ----- Original Message ----- > >> > I find the AUTO_RESIZE_FULLSCREEN enum name to be slightly confusing. To > >> > me, > >> > it > >> > implies that we should always auto-resize when the window is fullscreen. > >> > But > >> > what it actually means is that we should only auto-resize *once* when > >> > the > >> > window > >> > first becomes fullscreen. > >> > > >> > Rename it to AUTO_RESIZE_ONCE to make that behavior more clear and to > >> > match > >> > the > >> > other values (ALWAYS, NEVER) a bit more closely. > >> > >> Makes a lot of sense, ack > >> > >> thanks > >> > >> > --- > >> > src/virt-viewer-display-spice.c | 19 ++++++++++--------- > >> > 1 file changed, 10 insertions(+), 9 deletions(-) > >> > > >> > diff --git a/src/virt-viewer-display-spice.c > >> > b/src/virt-viewer-display-spice.c > >> > index 48f07e3..5a54463 100644 > >> > --- a/src/virt-viewer-display-spice.c > >> > +++ b/src/virt-viewer-display-spice.c > >> > @@ -35,17 +35,18 @@ > >> > > >> > G_DEFINE_TYPE (VirtViewerDisplaySpice, virt_viewer_display_spice, > >> > VIRT_VIEWER_TYPE_DISPLAY) > >> > > >> > +typedef enum { > >> > + AUTO_RESIZE_ALWAYS, > >> > + AUTO_RESIZE_ONCE, > >> > + AUTO_RESIZE_NEVER, > >> > +} AutoResizeMode; > >> > + > >> > struct _VirtViewerDisplaySpicePrivate { > >> > SpiceChannel *channel; /* weak reference */ > >> > SpiceDisplay *display; > >> > - int auto_resize; > >> > + AutoResizeMode auto_resize; > >> > }; > >> > > >> > -enum { > >> > - AUTO_RESIZE_ALWAYS, > >> > - AUTO_RESIZE_FULLSCREEN, > >> > - AUTO_RESIZE_NEVER, > >> > -}; > >> > > >> > #define VIRT_VIEWER_DISPLAY_SPICE_GET_PRIVATE(o) > >> > (G_TYPE_INSTANCE_GET_PRIVATE((o), VIRT_VIEWER_TYPE_DISPLAY_SPICE, > >> > VirtViewerDisplaySpicePrivate)) > >> > > >> > @@ -197,7 +198,7 @@ > >> > virt_viewer_display_spice_resize(VirtViewerDisplaySpice > >> > *self, > >> > if (virt_viewer_display_get_show_hint(VIRT_VIEWER_DISPLAY(self)) & > >> > VIRT_VIEWER_DISPLAY_SHOW_HINT_DISABLED) > >> > return; > >> > > >> > - if (self->priv->auto_resize == AUTO_RESIZE_FULLSCREEN) { > >> > + if (self->priv->auto_resize == AUTO_RESIZE_ONCE) { > >> > GdkRectangle monitor; > >> > GdkScreen *screen = gtk_widget_get_screen(GTK_WIDGET(self)); > >> > int n = > >> > virt_viewer_display_get_monitor(VIRT_VIEWER_DISPLAY(self)); > >> > @@ -246,7 +247,7 @@ > >> > virt_viewer_display_spice_size_allocate(VirtViewerDisplaySpice *self, > >> > virt_viewer_display_spice_resize(self, allocation, > >> > self->priv->auto_resize != > >> > AUTO_RESIZE_NEVER); > >> > > >> > - if (self->priv->auto_resize == AUTO_RESIZE_FULLSCREEN) > >> > + if (self->priv->auto_resize == AUTO_RESIZE_ONCE) > >> > self->priv->auto_resize = AUTO_RESIZE_NEVER; > >> > } > >> > > >> > @@ -291,7 +292,7 @@ fullscreen_changed(VirtViewerDisplaySpice *self, > >> > if (auto_conf) > >> > self->priv->auto_resize = AUTO_RESIZE_NEVER; > >> > else > >> > - self->priv->auto_resize = AUTO_RESIZE_FULLSCREEN; > >> > + self->priv->auto_resize = AUTO_RESIZE_ONCE; > >> > } else > >> > self->priv->auto_resize = AUTO_RESIZE_ALWAYS; > >> > } > >> > -- > >> > 1.8.3.1 > >> > > >> > _______________________________________________ > >> > virt-tools-list mailing list > >> > virt-tools-list@xxxxxxxxxx > >> > https://www.redhat.com/mailman/listinfo/virt-tools-list > >> > > >> > > > > _______________________________________________ > > virt-tools-list mailing list > > virt-tools-list@xxxxxxxxxx > > https://www.redhat.com/mailman/listinfo/virt-tools-list > > > > -- > Marc-André Lureau > _______________________________________________ virt-tools-list mailing list virt-tools-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/virt-tools-list