From ad64d0a3acbdaa6004b888af7737ef3cddbfe860 Mon Sep 17 00:00:00 2001 From: Marc-André Lureau Date: Dec 21 2018 11:14:29 +0000 Subject: session: skip monitor changes if there is no sized monitors spice-gtk discards configurations without any sized monitors. Also shuts extra warnings when shifting the monitors. Signed-off-by: Marc-André Lureau Acked-by: Victor Toso --- diff --git a/src/virt-viewer-session.c b/src/virt-viewer-session.c index 5bac3d9..7fd941e 100644 --- a/src/virt-viewer-session.c +++ b/src/virt-viewer-session.c @@ -406,6 +406,7 @@ virt_viewer_session_on_monitor_geometry_changed(VirtViewerSession* self, gboolean all_fullscreen = TRUE; /* GHashTable */ GHashTable *monitors; + gint n_sized_monitors = 0; GList *l; klass = VIRT_VIEWER_SESSION_GET_CLASS(self); @@ -421,6 +422,8 @@ virt_viewer_session_on_monitor_geometry_changed(VirtViewerSession* self, g_object_get(d, "nth-display", &nth, NULL); virt_viewer_display_get_preferred_monitor_geometry(d, rect); + if (rect->width > 0 && rect->height > 0) + n_sized_monitors++; if (virt_viewer_display_get_enabled(d) && !virt_viewer_display_get_fullscreen(d)) @@ -428,12 +431,18 @@ virt_viewer_session_on_monitor_geometry_changed(VirtViewerSession* self, g_hash_table_insert(monitors, GINT_TO_POINTER(nth), rect); } + if (n_sized_monitors == 0) { + goto cleanup; + } + if (!all_fullscreen) virt_viewer_align_monitors_linear(monitors); virt_viewer_shift_monitors_to_origin(monitors); klass->apply_monitor_geometry(self, monitors); + +cleanup: g_hash_table_unref(monitors); }