From 3ce3a5a952396e28d3d35d9d5111ccd46de4ac72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Wed, 21 Jun 2017 17:58:46 +0800 Subject: [PATCH] monitor: Add API to compare with old instance When monitors changed, previous monitor instances are defunct, and any reference holder should drop its reference. Sometimes they will want to continue having a reference to the same monitor, so add this function to make it possible to find it. Currently the output and crtc references are invalid, as they are not yet reference counted, so this can only look at cached fields. https://bugzilla.gnome.org/show_bug.cgi?id=784199 --- src/backends/meta-monitor.c | 12 ++++++++++++ src/backends/meta-monitor.h | 3 +++ 2 files changed, 15 insertions(+) diff --git a/src/backends/meta-monitor.c b/src/backends/meta-monitor.c index f7e23b0b5..9a15c31d0 100644 --- a/src/backends/meta-monitor.c +++ b/src/backends/meta-monitor.c @@ -248,6 +248,18 @@ meta_monitor_is_laptop_panel (MetaMonitor *monitor) } } +gboolean +meta_monitor_is_same_as (MetaMonitor *monitor, + MetaMonitor *other_monitor) +{ + MetaMonitorPrivate *priv = + meta_monitor_get_instance_private (monitor); + MetaMonitorPrivate *other_priv = + meta_monitor_get_instance_private (other_monitor); + + return priv->winsys_id == other_priv->winsys_id; +} + void meta_monitor_get_current_resolution (MetaMonitor *monitor, int *width, diff --git a/src/backends/meta-monitor.h b/src/backends/meta-monitor.h index 3a6307c85..6ca93cd57 100644 --- a/src/backends/meta-monitor.h +++ b/src/backends/meta-monitor.h @@ -111,6 +111,9 @@ gboolean meta_monitor_is_underscanning (MetaMonitor *monitor); gboolean meta_monitor_is_laptop_panel (MetaMonitor *monitor); +gboolean meta_monitor_is_same_as (MetaMonitor *monitor, + MetaMonitor *other_monitor); + GList * meta_monitor_get_outputs (MetaMonitor *monitor); void meta_monitor_get_current_resolution (MetaMonitor *monitor,