summaryrefslogtreecommitdiff
path: root/src/backends
diff options
context:
space:
mode:
authorJonas Ådahl <jadahl@gmail.com>2017-07-04 11:56:18 +0800
committerJonas Ådahl <jadahl@gmail.com>2017-10-05 16:18:43 -0400
commite0d839aea2836386823eac3c7b8c9a9af56507f2 (patch)
tree419f9314e19a3e31270a17e3775c4c6f1a7126ec /src/backends
parentd3efd73429a67de547b76469a21c0b26398c31f5 (diff)
downloadmutter-e0d839aea2836386823eac3c7b8c9a9af56507f2.tar.gz
backends/output: Keep a pointer to the monitor manager
Instead of passing it around or fetching the singleton, keep a pointer to the monitor manager that owns the output. This will eventually be replaced with a per GPU/graphics card object. https://bugzilla.gnome.org/show_bug.cgi?id=785381
Diffstat (limited to 'src/backends')
-rw-r--r--src/backends/meta-monitor-manager-dummy.c25
-rw-r--r--src/backends/meta-output.c6
-rw-r--r--src/backends/meta-output.h4
-rw-r--r--src/backends/native/meta-monitor-manager-kms.c1
-rw-r--r--src/backends/x11/meta-monitor-manager-xrandr.c1
5 files changed, 27 insertions, 10 deletions
diff --git a/src/backends/meta-monitor-manager-dummy.c b/src/backends/meta-monitor-manager-dummy.c
index 1638f1dff..14cdb3b25 100644
--- a/src/backends/meta-monitor-manager-dummy.c
+++ b/src/backends/meta-monitor-manager-dummy.c
@@ -89,10 +89,11 @@ create_mode (CrtcModeSpec *spec,
}
static void
-append_monitor (GList **modes,
- GList **crtcs,
- GList **outputs,
- float scale)
+append_monitor (MetaMonitorManager *manager,
+ GList **modes,
+ GList **crtcs,
+ GList **outputs,
+ float scale)
{
CrtcModeSpec mode_specs[] = {
{
@@ -140,6 +141,7 @@ append_monitor (GList **modes,
number = g_list_length (*outputs) + 1;
+ output->monitor_manager = manager;
output->winsys_id = number;
output->name = g_strdup_printf ("LVDS%d", number);
output->vendor = g_strdup ("MetaProducts Inc.");
@@ -174,10 +176,11 @@ append_monitor (GList **modes,
}
static void
-append_tiled_monitor (GList **modes,
- GList **crtcs,
- GList **outputs,
- int scale)
+append_tiled_monitor (MetaMonitorManager *manager,
+ GList **modes,
+ GList **crtcs,
+ GList **outputs,
+ int scale)
{
CrtcModeSpec mode_specs[] = {
{
@@ -242,6 +245,7 @@ append_tiled_monitor (GList **modes,
output = g_object_new (META_TYPE_OUTPUT, NULL);
+ output->monitor_manager = manager;
output->winsys_id = number;
output->name = g_strdup_printf ("LVDS%d", number);
output->vendor = g_strdup ("MetaProducts Inc.");
@@ -385,9 +389,10 @@ meta_monitor_manager_dummy_read_current (MetaMonitorManager *manager)
for (i = 0; i < num_monitors; i++)
{
if (tiled_monitors)
- append_tiled_monitor (&modes, &crtcs, &outputs, monitor_scales[i]);
+ append_tiled_monitor (manager,
+ &modes, &crtcs, &outputs, monitor_scales[i]);
else
- append_monitor (&modes, &crtcs, &outputs, monitor_scales[i]);
+ append_monitor (manager, &modes, &crtcs, &outputs, monitor_scales[i]);
}
manager->modes = modes;
diff --git a/src/backends/meta-output.c b/src/backends/meta-output.c
index 1dd0ffa58..c3a7bd99b 100644
--- a/src/backends/meta-output.c
+++ b/src/backends/meta-output.c
@@ -23,6 +23,12 @@
G_DEFINE_TYPE (MetaOutput, meta_output, G_TYPE_OBJECT)
+MetaMonitorManager *
+meta_output_get_monitor_manager (MetaOutput *output)
+{
+ return output->monitor_manager;
+}
+
static void
meta_output_finalize (GObject *object)
{
diff --git a/src/backends/meta-output.h b/src/backends/meta-output.h
index 5f51d52c0..922b0e7f0 100644
--- a/src/backends/meta-output.h
+++ b/src/backends/meta-output.h
@@ -62,6 +62,8 @@ struct _MetaOutput
{
GObject parent;
+ MetaMonitorManager *monitor_manager;
+
/* The CRTC driving this output, NULL if the output is not enabled */
MetaCrtc *crtc;
@@ -117,4 +119,6 @@ struct _MetaOutput
#define META_TYPE_OUTPUT (meta_output_get_type ())
G_DECLARE_FINAL_TYPE (MetaOutput, meta_output, META, OUTPUT, GObject)
+MetaMonitorManager * meta_output_get_monitor_manager (MetaOutput *output);
+
#endif /* META_OUTPUT_H */
diff --git a/src/backends/native/meta-monitor-manager-kms.c b/src/backends/native/meta-monitor-manager-kms.c
index 20751f689..bc4df6ab6 100644
--- a/src/backends/native/meta-monitor-manager-kms.c
+++ b/src/backends/native/meta-monitor-manager-kms.c
@@ -730,6 +730,7 @@ create_output (MetaMonitorManager *manager,
output->driver_private = output_kms;
output->driver_notify = (GDestroyNotify)meta_output_destroy_notify;
+ output->monitor_manager = manager;
output->winsys_id = connector->connector_id;
output->name = make_output_name (connector);
output->width_mm = connector->mmWidth;
diff --git a/src/backends/x11/meta-monitor-manager-xrandr.c b/src/backends/x11/meta-monitor-manager-xrandr.c
index 558bede31..1d9701ec4 100644
--- a/src/backends/x11/meta-monitor-manager-xrandr.c
+++ b/src/backends/x11/meta-monitor-manager-xrandr.c
@@ -872,6 +872,7 @@ meta_monitor_manager_xrandr_read_current (MetaMonitorManager *manager)
continue;
output = g_object_new (META_TYPE_OUTPUT, NULL);
+ output->monitor_manager = manager;
if (xrandr_output->connection != RR_Disconnected)
{