From 8665084df15190adc0d18cc77b7fcb738d3e4fa6 Mon Sep 17 00:00:00 2001 From: Cosimo Cecchi Date: Thu, 4 Jul 2019 12:52:30 -0700 Subject: [PATCH] monitor-manager: check for underscan setting validity upfront Instead of doing a roundtrip to the X server before setting it, rely on the previous value fetched before the configuration was sent over DBus. This matches the argument check we already do elsewhere, and will allow us to more easily add an additional condition to determine if underscan is supported. https://gitlab.gnome.org/GNOME/mutter/merge_requests/673 --- src/backends/meta-monitor-manager.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/backends/meta-monitor-manager.c b/src/backends/meta-monitor-manager.c index 7e2603f69..a64af1a46 100644 --- a/src/backends/meta-monitor-manager.c +++ b/src/backends/meta-monitor-manager.c @@ -1649,6 +1649,7 @@ create_monitor_config_from_variant (MetaMonitorManager *manager, MetaMonitorModeSpec *monitor_mode_spec; g_autoptr (GVariant) properties_variant = NULL; gboolean enable_underscanning = FALSE; + gboolean set_underscanning = FALSE; g_variant_get (monitor_config_variant, "(ss@a{sv})", &connector, @@ -1671,7 +1672,18 @@ create_monitor_config_from_variant (MetaMonitorManager *manager, return NULL; } - g_variant_lookup (properties_variant, "underscanning", "b", &enable_underscanning); + set_underscanning = + g_variant_lookup (properties_variant, "underscanning", "b", + &enable_underscanning); + if (set_underscanning) + { + if (enable_underscanning && !meta_monitor_supports_underscanning (monitor)) + { + g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, + "Underscanning requested but unsupported"); + return NULL; + } + } monitor_spec = meta_monitor_spec_clone (meta_monitor_get_spec (monitor));