color-device: Make it possible to outlive the active monitors

Previously the color device was destroyed when it was attached to a
monitor that was going away. However, the MetaMonitor objects are
ref-counted and can stay around for longer, even if the underlying
resources went away. We need color devices for as long as the
MetaMonitors are alive.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3904>
This commit is contained in:
Sebastian Wick
2024-07-18 16:24:34 +02:00
parent a10b56e946
commit 431c4d12b9
4 changed files with 5 additions and 11 deletions

View File

@ -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