[mutter/gbsneto/underscan: 3/4] monitor-manager: check for underscan setting validity upfront



commit 6b29863ed626adee4c47392657dd44d1e340c319
Author: Cosimo Cecchi <cosimo endlessm com>
Date:   Tue Jun 28 13:26:36 2016 -0700

    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://bugzilla.gnome.org/show_bug.cgi?id=767804

 src/backends/meta-monitor-manager.c   | 13 ++++++++++++-
 src/backends/x11/meta-output-xrandr.c |  4 +---
 2 files changed, 13 insertions(+), 4 deletions(-)
---
diff --git a/src/backends/meta-monitor-manager.c b/src/backends/meta-monitor-manager.c
index 2d898c757..6f2460f27 100644
--- a/src/backends/meta-monitor-manager.c
+++ b/src/backends/meta-monitor-manager.c
@@ -1736,6 +1736,7 @@ create_monitor_config_from_variant (MetaMonitorManager *manager,
   MetaMonitor *monitor;
   MetaMonitorSpec *monitor_spec;
   MetaMonitorModeSpec *monitor_mode_spec;
+  MetaOutput *output;
   g_autoptr (GVariant) properties_variant = NULL;
   gboolean enable_underscanning = FALSE;
 
@@ -1760,7 +1761,17 @@ create_monitor_config_from_variant (MetaMonitorManager *manager,
       return NULL;
     }
 
-  g_variant_lookup (properties_variant, "underscanning", "b", &enable_underscanning);
+  output = meta_monitor_get_main_output (monitor);
+  if (g_variant_lookup (properties_variant, "underscanning", "b", &enable_underscanning))
+    {
+      if (enable_underscanning && !output->supports_underscanning)
+        {
+          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));
 
diff --git a/src/backends/x11/meta-output-xrandr.c b/src/backends/x11/meta-output-xrandr.c
index 26a32f406..e97890a49 100644
--- a/src/backends/x11/meta-output-xrandr.c
+++ b/src/backends/x11/meta-output-xrandr.c
@@ -166,9 +166,7 @@ meta_output_xrandr_apply_mode (MetaOutput *output)
     }
 
   output_set_presentation_xrandr (output, output->is_presentation);
-
-  if (output->supports_underscanning)
-    output_set_underscanning_xrandr (output, output->is_underscanning);
+  output_set_underscanning_xrandr (output, output->is_underscanning);
 }
 
 static int


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