summaryrefslogtreecommitdiffstats
path: root/src/virt-viewer-window.c
diff options
context:
space:
mode:
authorMarc-André Lureau <marcandre.lureau@gmail.com>2014-04-01 18:37:28 +0200
committerMarc-André Lureau <marcandre.lureau@gmail.com>2014-04-17 11:48:01 +0200
commit7e13de0c32ea2529a2d93a0493358bcd7408ada2 (patch)
tree12cc15e9dd169c27f88fd7945f90d63eb687c2bb /src/virt-viewer-window.c
parent5ab6eb7b333fb4a440822b28b3b24652705638e3 (diff)
downloadvirt-viewer-7e13de0c32ea2529a2d93a0493358bcd7408ada2.tar.gz
virt-viewer-7e13de0c32ea2529a2d93a0493358bcd7408ada2.tar.xz
virt-viewer-7e13de0c32ea2529a2d93a0493358bcd7408ada2.zip
Fix race with metacity in fullscreen
To avoid some races with metacity, the window should be placed as early as possible, before it is (re)allocated & mapped (rhbz#809546).
Diffstat (limited to 'src/virt-viewer-window.c')
-rw-r--r--src/virt-viewer-window.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/virt-viewer-window.c b/src/virt-viewer-window.c
index f310072..6f6f9a4 100644
--- a/src/virt-viewer-window.c
+++ b/src/virt-viewer-window.c
@@ -467,7 +467,7 @@ virt_viewer_window_move_to_monitor(VirtViewerWindow *self)
GdkRectangle mon;
gint n = priv->fullscreen_monitor;
- if (n == -1 || !priv->fullscreen)
+ if (n == -1)
return;
gdk_screen_get_monitor_geometry(gdk_screen_get_default(), n, &mon);
@@ -542,6 +542,12 @@ virt_viewer_window_enter_fullscreen(VirtViewerWindow *self, gint monitor)
priv->fullscreen = TRUE;
if (!gtk_widget_get_mapped(priv->window)) {
+ /*
+ * To avoid some races with metacity, the window should be placed
+ * as early as possible, before it is (re)allocated & mapped
+ * Position & size should not be queried yet. (rhbz#809546).
+ */
+ virt_viewer_window_move_to_monitor(self);
g_signal_connect(priv->window, "map-event", G_CALLBACK(mapped), self);
return;
}
@@ -1292,7 +1298,8 @@ virt_viewer_window_show(VirtViewerWindow *self)
if (self->priv->kiosk)
virt_viewer_window_enable_kiosk(self);
- virt_viewer_window_move_to_monitor(self);
+ if (self->priv->fullscreen)
+ virt_viewer_window_move_to_monitor(self);
}
void