diff options
author | Marc-André Lureau <marcandre.lureau@redhat.com> | 2018-07-26 21:28:36 +0200 |
---|---|---|
committer | Marc-André Lureau <marcandre.lureau@redhat.com> | 2018-12-21 15:14:29 +0400 |
commit | ad64d0a3acbdaa6004b888af7737ef3cddbfe860 (patch) | |
tree | ed44c27b81303f9816ef65b3554423488b2cd8ca | |
parent | 1ad52ea8e90406ebe375a68b4e1018978167f34c (diff) |
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 <marcandre.lureau@redhat.com>
Acked-by: Victor Toso <victortoso@redhat.com>
-rw-r--r-- | src/virt-viewer-session.c | 9 |
1 files changed, 9 insertions, 0 deletions
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<gint, GdkRectangle*> */ 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); } |