diff --git a/src/backends/meta-crtc.c b/src/backends/meta-crtc.c index ae92a7e67..f19e6b8c3 100644 --- a/src/backends/meta-crtc.c +++ b/src/backends/meta-crtc.c @@ -25,6 +25,12 @@ G_DEFINE_TYPE (MetaCrtc, meta_crtc, G_TYPE_OBJECT) G_DEFINE_TYPE (MetaCrtcMode, meta_crtc_mode, G_TYPE_OBJECT) +MetaMonitorManager * +meta_crtc_get_monitor_manager (MetaCrtc *crtc) +{ + return crtc->monitor_manager; +} + static void meta_crtc_finalize (GObject *object) { diff --git a/src/backends/meta-crtc.h b/src/backends/meta-crtc.h index d9eef4f52..cb92d8dcf 100644 --- a/src/backends/meta-crtc.h +++ b/src/backends/meta-crtc.h @@ -50,6 +50,8 @@ struct _MetaCrtc { GObject parent; + MetaMonitorManager *monitor_manager; + glong crtc_id; MetaRectangle rect; MetaCrtcMode *current_mode; @@ -91,4 +93,6 @@ G_DECLARE_FINAL_TYPE (MetaCrtc, meta_crtc, META, CRTC, GObject) #define META_TYPE_CRTC_MODE (meta_crtc_mode_get_type ()) G_DECLARE_FINAL_TYPE (MetaCrtcMode, meta_crtc_mode, META, CRTC_MODE, GObject) +MetaMonitorManager * meta_crtc_get_monitor_manager (MetaCrtc *crtc); + #endif /* META_CRTC_H */ diff --git a/src/backends/meta-monitor-manager-dummy.c b/src/backends/meta-monitor-manager-dummy.c index 14cdb3b25..8f9f8faa8 100644 --- a/src/backends/meta-monitor-manager-dummy.c +++ b/src/backends/meta-monitor-manager-dummy.c @@ -218,6 +218,7 @@ append_tiled_monitor (MetaMonitorManager *manager, MetaCrtc *crtc; crtc = g_object_new (META_TYPE_CRTC, NULL); + crtc->monitor_manager = manager; crtc->crtc_id = g_list_length (*crtcs) + i + 1; crtc->all_transforms = ALL_TRANSFORMS; new_crtcs = g_list_append (new_crtcs, crtc); diff --git a/src/backends/native/meta-monitor-manager-kms.c b/src/backends/native/meta-monitor-manager-kms.c index 8b0f85d49..cb10c43b6 100644 --- a/src/backends/native/meta-monitor-manager-kms.c +++ b/src/backends/native/meta-monitor-manager-kms.c @@ -422,6 +422,7 @@ create_crtc (MetaMonitorManager *manager, crtc = g_object_new (META_TYPE_CRTC, NULL); + crtc->monitor_manager = manager; crtc->crtc_id = drm_crtc->crtc_id; crtc->rect.x = drm_crtc->x; crtc->rect.y = drm_crtc->y; diff --git a/src/backends/x11/meta-monitor-manager-xrandr.c b/src/backends/x11/meta-monitor-manager-xrandr.c index 1d9701ec4..5f78c6a73 100644 --- a/src/backends/x11/meta-monitor-manager-xrandr.c +++ b/src/backends/x11/meta-monitor-manager-xrandr.c @@ -833,6 +833,7 @@ meta_monitor_manager_xrandr_read_current (MetaMonitorManager *manager) crtc = g_object_new (META_TYPE_CRTC, NULL); + crtc->monitor_manager = manager; crtc->crtc_id = resources->crtcs[i]; crtc->rect.x = xrandr_crtc->x; crtc->rect.y = xrandr_crtc->y; diff --git a/src/tests/meta-monitor-manager-test.c b/src/tests/meta-monitor-manager-test.c index 942b5e18d..44187ee2e 100644 --- a/src/tests/meta-monitor-manager-test.c +++ b/src/tests/meta-monitor-manager-test.c @@ -97,6 +97,8 @@ meta_monitor_manager_test_read_current (MetaMonitorManager *manager) for (l = manager_test->test_setup->outputs; l; l = l->next) META_OUTPUT (l->data)->monitor_manager = manager; + for (l = manager_test->test_setup->crtcs; l; l = l->next) + META_CRTC (l->data)->monitor_manager = manager; manager->modes = manager_test->test_setup->modes;