diff --git a/src/backends/meta-monitor-manager.c b/src/backends/meta-monitor-manager.c index b520e2ed0..b8d9b4e98 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 35e16b908..9a242cd93 100644 --- a/src/backends/meta-monitor.c +++ b/src/backends/meta-monitor.c @@ -186,6 +186,16 @@ meta_monitor_is_primary (MetaMonitor *monitor) return output->is_primary; } +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) { diff --git a/src/backends/meta-monitor.h b/src/backends/meta-monitor.h index 3940a2faf..fc75c8ca6 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 a71e14554..9efe535de 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. - -->