[mutter] monitor-manager: Add public API to get logical monitor from connector



commit 1caa7f76279b452e82e09feb7addec35f1d20649
Author: Jonas Ådahl <jadahl gmail com>
Date:   Thu Apr 6 13:15:45 2017 +0800

    monitor-manager: Add public API to get logical monitor from connector
    
    This adds a function to be used by gnome-shell to get the logical
    monitor given a connector name. For now, use the same index integer
    method to reference a logical monitor, but this should be revisited by
    providing a better API later.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=777732

 src/backends/meta-monitor-manager.c |   29 +++++++++++++++++++++++++++++
 src/meta/meta-monitor-manager.h     |    3 +++
 2 files changed, 32 insertions(+), 0 deletions(-)
---
diff --git a/src/backends/meta-monitor-manager.c b/src/backends/meta-monitor-manager.c
index 0cef918..48c99a0 100644
--- a/src/backends/meta-monitor-manager.c
+++ b/src/backends/meta-monitor-manager.c
@@ -2909,6 +2909,35 @@ meta_monitor_manager_get_monitor_for_output (MetaMonitorManager *manager,
   return -1;
 }
 
+/**
+ * meta_monitor_manager_get_monitor_for_connector:
+ * @manager: A #MetaMonitorManager
+ * @connector: A valid connector name
+ *
+ * Returns: The monitor index or -1 if @id isn't valid or the connector
+ * isn't associated with a logical monitor.
+ */
+gint
+meta_monitor_manager_get_monitor_for_connector (MetaMonitorManager *manager,
+                                                const char         *connector)
+{
+  GList *l;
+
+  for (l = manager->monitors; l; l = l->next)
+    {
+      MetaMonitor *monitor = l->data;
+
+      if (g_str_equal (connector, meta_monitor_get_connector (monitor)))
+        {
+          MetaOutput *main_output = meta_monitor_get_main_output (monitor);
+
+          return main_output->crtc->logical_monitor->number;
+        }
+    }
+
+  return -1;
+}
+
 gboolean
 meta_monitor_manager_get_is_builtin_display_on (MetaMonitorManager *manager)
 {
diff --git a/src/meta/meta-monitor-manager.h b/src/meta/meta-monitor-manager.h
index 68b5451..da1e329 100644
--- a/src/meta/meta-monitor-manager.h
+++ b/src/meta/meta-monitor-manager.h
@@ -34,6 +34,9 @@ MetaMonitorManager *meta_monitor_manager_get  (void);
 gint meta_monitor_manager_get_monitor_for_output (MetaMonitorManager *manager,
                                                   guint               id);
 
+gint meta_monitor_manager_get_monitor_for_connector (MetaMonitorManager *manager,
+                                                     const char         *connector);
+
 gboolean meta_monitor_manager_get_is_builtin_display_on (MetaMonitorManager *manager);
 
 #endif /* META_MONITOR_MANAGER_H */


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