diff options
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 |