summaryrefslogtreecommitdiff
path: root/src/backends/meta-logical-monitor.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backends/meta-logical-monitor.c')
-rw-r--r--src/backends/meta-logical-monitor.c14
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