[virt-tools-list] [PATCH 2/2] Set Spice display to fullscreen if owning window is pending fullscreen

Marc-André Lureau marcandre.lureau at gmail.com
Wed Oct 9 20:29:22 UTC 2013


To avoid introducing a new pending state, we could set

priv->fullscreen = TRUE;

before the delayed map-event, and in the handler, set it back to
FALSE. That really shouldn't be a problem, and since it's a
special/temporary case, I think that would be simpler.

On Wed, Oct 9, 2013 at 10:09 PM, Jonathon Jongsma <jjongsma at redhat.com> wrote:
> When you call virt_viewer_window_enter_fullscreen() on a hidden window, it
> doesn't actually change its fullscreen state.  Instead, it sets up a map-event
> handler to enter fullscreen after it is shown. When _set_display() is called on
> a window that is pending fullscreen status, it initially sets the fullscreen
> state of the display to FALSE, which can cause an unwanted resize to be sent
> down to the guest.
> ---
>  src/virt-viewer-window.c | 6 +++++-
>  1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/src/virt-viewer-window.c b/src/virt-viewer-window.c
> index 0f62feb..7108aa0 100644
> --- a/src/virt-viewer-window.c
> +++ b/src/virt-viewer-window.c
> @@ -96,6 +96,7 @@ struct _VirtViewerWindowPrivate {
>      GSList *accel_list;
>      gboolean enable_mnemonics_save;
>      gboolean grabbed;
> +    gboolean fullscreen_pending;
>      gint fullscreen_monitor;
>      gboolean desktop_resize_pending;
>      gboolean kiosk;
> @@ -294,6 +295,7 @@ virt_viewer_window_init (VirtViewerWindow *self)
>      self->priv = GET_PRIVATE(self);
>      priv = self->priv;
>
> +    priv->fullscreen_pending = FALSE;
>      priv->fullscreen_monitor = -1;
>      priv->auto_resize = TRUE;
>      g_value_init(&priv->accel_setting, G_TYPE_STRING);
> @@ -533,11 +535,13 @@ virt_viewer_window_enter_fullscreen(VirtViewerWindow *self, gint monitor)
>      priv->fullscreen_monitor = monitor;
>
>      if (!gtk_widget_get_mapped(priv->window)) {
> +        priv->fullscreen_pending = TRUE;
>          g_signal_connect(priv->window, "map-event", G_CALLBACK(mapped), self);
>          return;
>      }
>
>      priv->fullscreen = TRUE;
> +    priv->fullscreen_pending = FALSE;
>
>      gtk_check_menu_item_set_active(check, TRUE);
>      gtk_widget_hide(menu);
> @@ -1232,7 +1236,7 @@ virt_viewer_window_set_display(VirtViewerWindow *self, VirtViewerDisplay *displa
>          virt_viewer_display_set_zoom_level(VIRT_VIEWER_DISPLAY(priv->display), priv->zoomlevel);
>          virt_viewer_display_set_auto_resize(VIRT_VIEWER_DISPLAY(priv->display), priv->auto_resize);
>          virt_viewer_display_set_monitor(VIRT_VIEWER_DISPLAY(priv->display), priv->fullscreen_monitor);
> -        virt_viewer_display_set_fullscreen(VIRT_VIEWER_DISPLAY(priv->display), priv->fullscreen);
> +        virt_viewer_display_set_fullscreen(VIRT_VIEWER_DISPLAY(priv->display), priv->fullscreen_pending || priv->fullscreen);
>
>          gtk_widget_show_all(GTK_WIDGET(display));
>          gtk_notebook_append_page(GTK_NOTEBOOK(priv->notebook), GTK_WIDGET(display), NULL);
> --
> 1.8.3.1
>
> _______________________________________________
> virt-tools-list mailing list
> virt-tools-list at redhat.com
> https://www.redhat.com/mailman/listinfo/virt-tools-list



-- 
Marc-André Lureau




More information about the virt-tools-list mailing list