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

Jonathon Jongsma jjongsma at redhat.com
Wed Oct 9 20:09:53 UTC 2013


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




More information about the virt-tools-list mailing list