[mutter] DisplayConfig: Add an optional 'is_underscanning' monitor property
- From: Jonas Ådahl <jadahl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter] DisplayConfig: Add an optional 'is_underscanning' monitor property
- Date: Fri, 7 Apr 2017 14:33:09 +0000 (UTC)
commit 6b2a11142804e7e499843497e1c03a14d592bbe9
Author: Jonas Ådahl <jadahl gmail com>
Date: Mon Jan 23 17:59:43 2017 +0800
DisplayConfig: Add an optional 'is_underscanning' monitor property
Add a 'is_underscanning' entry to the properties map, if the monitor
supports underscanning. The client should assume a monitor does not
support underscanning if no property was added.
https://bugzilla.gnome.org/show_bug.cgi?id=777732
src/backends/meta-monitor-manager.c | 13 ++++++++++++-
src/backends/meta-monitor.c | 10 ++++++++++
src/backends/meta-monitor.h | 2 ++
src/org.gnome.Mutter.DisplayConfig.xml | 4 +++-
4 files changed, 27 insertions(+), 2 deletions(-)
---
diff --git a/src/backends/meta-monitor-manager.c b/src/backends/meta-monitor-manager.c
index b520e2e..b8d9b4e 100644
--- a/src/backends/meta-monitor-manager.c
+++ b/src/backends/meta-monitor-manager.c
@@ -1209,6 +1209,7 @@ meta_monitor_manager_handle_get_current_state (MetaDBusDisplayConfig *skeleton,
MetaMonitorMode *current_mode;
MetaMonitorMode *preferred_mode;
GVariantBuilder modes_builder;
+ GVariantBuilder properties_builder;
GList *k;
current_mode = meta_monitor_get_current_mode (monitor);
@@ -1240,13 +1241,23 @@ meta_monitor_manager_handle_get_current_state (MetaDBusDisplayConfig *skeleton,
flags);
}
+ g_variant_builder_init (&properties_builder, G_VARIANT_TYPE ("a{sv}"));
+ if (meta_monitor_supports_underscanning (monitor))
+ {
+ gboolean is_underscanning = meta_monitor_is_underscanning (monitor);
+
+ g_variant_builder_add (&properties_builder, "{sv}",
+ "is_underscanning",
+ g_variant_new_boolean (is_underscanning));
+ }
+
g_variant_builder_add (&monitors_builder, MONITOR_FORMAT,
monitor_spec->connector,
monitor_spec->vendor,
monitor_spec->product,
monitor_spec->serial,
&modes_builder,
- NULL);
+ &properties_builder);
}
for (l = manager->logical_monitors; l; l = l->next)
diff --git a/src/backends/meta-monitor.c b/src/backends/meta-monitor.c
index 35e16b9..9a242cd 100644
--- a/src/backends/meta-monitor.c
+++ b/src/backends/meta-monitor.c
@@ -187,6 +187,16 @@ meta_monitor_is_primary (MetaMonitor *monitor)
}
gboolean
+meta_monitor_supports_underscanning (MetaMonitor *monitor)
+{
+ MetaOutput *output;
+
+ output = meta_monitor_get_main_output (monitor);
+
+ return output->supports_underscanning;
+}
+
+gboolean
meta_monitor_is_underscanning (MetaMonitor *monitor)
{
MetaOutput *output;
diff --git a/src/backends/meta-monitor.h b/src/backends/meta-monitor.h
index 3940a2f..fc75c8c 100644
--- a/src/backends/meta-monitor.h
+++ b/src/backends/meta-monitor.h
@@ -91,6 +91,8 @@ MetaOutput * meta_monitor_get_main_output (MetaMonitor *monitor);
gboolean meta_monitor_is_primary (MetaMonitor *monitor);
+gboolean meta_monitor_supports_underscanning (MetaMonitor *monitor);
+
gboolean meta_monitor_is_underscanning (MetaMonitor *monitor);
gboolean meta_monitor_is_laptop_panel (MetaMonitor *monitor);
diff --git a/src/org.gnome.Mutter.DisplayConfig.xml b/src/org.gnome.Mutter.DisplayConfig.xml
index a71e145..9efe535 100644
--- a/src/org.gnome.Mutter.DisplayConfig.xml
+++ b/src/org.gnome.Mutter.DisplayConfig.xml
@@ -313,6 +313,9 @@
* a{sv} properties: optional properties, including:
- "width_mm" (i): physical width of monitor in millimeters
- "height_mm" (i): physical height of monitor in millimeters
+ - "is_underscanning" (b): whether underscanning is enabled
+ (absence of this means underscanning
+ not being supported)
Possible mode flags:
1 : preferred mode
@@ -337,7 +340,6 @@
@max_screen_size represents the maximum size the screen may have, or 0x0 if no
such limit is known.
-
-->
<method name="GetCurrentState">
<arg name="serial" direction="out" type="u" />
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]