From be9e6dcc4f1af62ec1ab07b544818b7af1082f55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= Date: Sat, 16 Mar 2019 00:22:31 +0100 Subject: [PATCH] monitor-config-manager: Reject a suggested config with gaps It could happen that monitors suggest to use coordinates that don't take in consideration the scaling applied to one monitor, and such the generated configuration is not valid because not all the monitors are adjacent. So enforce this check before accepting a suggested configuration as it is. Part-of: --- src/backends/meta-monitor-config-manager.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/backends/meta-monitor-config-manager.c b/src/backends/meta-monitor-config-manager.c index 8b0b9f9b5..9de418a5d 100644 --- a/src/backends/meta-monitor-config-manager.c +++ b/src/backends/meta-monitor-config-manager.c @@ -904,6 +904,21 @@ meta_monitor_config_manager_create_suggested (MetaMonitorConfigManager *config_m region = g_list_prepend (region, &logical_monitor_config->layout); } + for (l = region; region->next && l; l = l->next) + { + MetaRectangle *rect = l->data; + + if (!meta_rectangle_is_adjacent_to_any_in_region (region, rect)) + { + g_warning ("Suggested monitor config has monitors with no neighbors, " + "rejecting"); + g_list_free (region); + g_list_free_full (logical_monitor_configs, + (GDestroyNotify) meta_logical_monitor_config_free); + return NULL; + } + } + g_list_free (region); if (!logical_monitor_configs)