diff options
author | Jonas Ådahl <jadahl@gmail.com> | 2017-11-03 18:27:57 +0800 |
---|---|---|
committer | Marco Trevisan (Treviño) <mail@3v1n0.net> | 2018-04-16 20:00:58 -0500 |
commit | 4997867c7e129dd0eaac32751e3b80c5651a6c1e (patch) | |
tree | df978b0b8ab8da5cb993e59ab97578ebb76467d3 /src/backends/meta-logical-monitor.c | |
parent | 5b0a1b52a6851da95056b5d48365a1f9dccc8244 (diff) | |
download | mutter-wip/monitor-crtc-private-struct.tar.gz |
backends: Add logical monitor -> monitor -> output -> crtc ref chainwip/monitor-crtc-private-struct
Make it so that each logical monitor has a reference to all the
monitors that are assigned to it.
All monitors has a reference to each output that belongs to it.
Each output has a reference to any CRTC it has been assigned.
https://bugzilla.gnome.org/show_bug.cgi?id=786929
Diffstat (limited to 'src/backends/meta-logical-monitor.c')
-rw-r--r-- | src/backends/meta-logical-monitor.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/backends/meta-logical-monitor.c b/src/backends/meta-logical-monitor.c index 9e14d660d..bc91d1d06 100644 --- a/src/backends/meta-logical-monitor.c +++ b/src/backends/meta-logical-monitor.c @@ -144,7 +144,7 @@ meta_logical_monitor_add_monitor (MetaLogicalMonitor *logical_monitor, is_presentation = logical_monitor->is_presentation; logical_monitor->monitors = g_list_append (logical_monitor->monitors, - monitor); + g_object_ref (monitor)); for (l = logical_monitor->monitors; l; l = l->next) { @@ -255,13 +255,17 @@ meta_logical_monitor_init (MetaLogicalMonitor *logical_monitor) } static void -meta_logical_monitor_finalize (GObject *object) +meta_logical_monitor_dispose (GObject *object) { MetaLogicalMonitor *logical_monitor = META_LOGICAL_MONITOR (object); - g_list_free (logical_monitor->monitors); + if (logical_monitor->monitors) + { + g_list_free_full (logical_monitor->monitors, g_object_unref); + logical_monitor->monitors = NULL; + } - G_OBJECT_CLASS (meta_logical_monitor_parent_class)->finalize (object); + G_OBJECT_CLASS (meta_logical_monitor_parent_class)->dispose (object); } static void @@ -269,7 +273,7 @@ meta_logical_monitor_class_init (MetaLogicalMonitorClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); - object_class->finalize = meta_logical_monitor_finalize; + object_class->dispose = meta_logical_monitor_dispose; } gboolean |