diff --git a/src/backends/meta-backend.c b/src/backends/meta-backend.c index 1634b8325..b07103d80 100644 --- a/src/backends/meta-backend.c +++ b/src/backends/meta-backend.c @@ -213,7 +213,6 @@ meta_backend_dispose (GObject *object) g_clear_pointer (&priv->cursor_tracker, meta_cursor_tracker_destroy); g_clear_object (&priv->current_device); - g_clear_object (&priv->color_manager); g_clear_object (&priv->monitor_manager); g_clear_object (&priv->orientation_manager); #ifdef HAVE_REMOTE_DESKTOP @@ -257,6 +256,9 @@ meta_backend_dispose (GObject *object) g_clear_pointer (&priv->stage, clutter_actor_destroy); g_clear_pointer (&priv->idle_manager, meta_idle_manager_free); g_clear_object (&priv->renderer); + /* the renderer keeps references to color devices which keep references + * to the color manager. */ + g_clear_object (&priv->color_manager); #ifdef HAVE_EGL g_clear_object (&priv->egl); #endif diff --git a/src/backends/meta-color-device.c b/src/backends/meta-color-device.c index 1c120e531..5f8c1968f 100644 --- a/src/backends/meta-color-device.c +++ b/src/backends/meta-color-device.c @@ -621,13 +621,6 @@ meta_color_device_new (MetaColorManager *color_manager, return color_device; } -void -meta_color_device_destroy (MetaColorDevice *color_device) -{ - g_object_run_dispose (G_OBJECT (color_device)); - g_object_unref (color_device); -} - void meta_color_device_update_monitor (MetaColorDevice *color_device, MetaMonitor *monitor) diff --git a/src/backends/meta-color-device.h b/src/backends/meta-color-device.h index 1f0172025..8c50b8a74 100644 --- a/src/backends/meta-color-device.h +++ b/src/backends/meta-color-device.h @@ -31,8 +31,6 @@ G_DECLARE_FINAL_TYPE (MetaColorDevice, meta_color_device, MetaColorDevice * meta_color_device_new (MetaColorManager *color_manager, MetaMonitor *monitor); -void meta_color_device_destroy (MetaColorDevice *color_device); - void meta_color_device_update_monitor (MetaColorDevice *color_device, MetaMonitor *monitor); diff --git a/src/backends/meta-color-manager.c b/src/backends/meta-color-manager.c index c1080865a..20adcca8e 100644 --- a/src/backends/meta-color-manager.c +++ b/src/backends/meta-color-manager.c @@ -165,7 +165,8 @@ update_devices (MetaColorManager *color_manager) devices = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, - (GDestroyNotify) meta_color_device_destroy); + (GDestroyNotify) g_object_unref); + for (l = meta_monitor_manager_get_monitors (monitor_manager); l; l = l->next) { MetaMonitor *monitor = META_MONITOR (l->data);