[mutter/gnome-3-34] monitor-manager: check for underscan setting validity upfront



commit ff885fea319873307f7cf8854be1ba391bed827b
Author: Cosimo Cecchi <cosimoc gnome org>
Date:   Thu Jul 4 19:52:30 2019 +0000

    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)

 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 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));
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]