summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCosimo Cecchi <cosimoc@gnome.org>2019-07-04 19:52:30 +0000
committerFlorian Müllner <florian.muellner@gmail.com>2019-10-18 11:36:34 +0000
commitff885fea319873307f7cf8854be1ba391bed827b (patch)
tree6857697b4e4e88438c3f8e0b3feb67b118ad2b4f
parentbf17e040101a51cda34ed246768a175afabd9a14 (diff)
downloadmutter-ff885fea319873307f7cf8854be1ba391bed827b.tar.gz
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 (cherry picked from commit 8665084df15190adc0d18cc77b7fcb738d3e4fa6)
-rw-r--r--src/backends/meta-monitor-manager.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/backends/meta-monitor-manager.c b/src/backends/meta-monitor-manager.c
index 41036ca2a..0210aee33 100644
--- a/src/backends/meta-monitor-manager.c
+++ b/src/backends/meta-monitor-manager.c
@@ -1648,6 +1648,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,
@@ -1670,7 +1671,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));