backend: Add color manager skeleton

Create a color manager type that eventually will be the high level
manager of color related behavior, such as ICC profiles and
color "temperature" a.k.a. night light.

For now, it's only an empty shell. It's also constructed by the actual
backend, as at a later point, the X11 and native color management
implementations will differ.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2141>
This commit is contained in:
Jonas Ådahl
2021-10-25 10:50:02 +02:00
committed by Marge Bot
parent 3faf1f15d7
commit 20a91aa4e9
9 changed files with 254 additions and 0 deletions

View File

@ -148,6 +148,7 @@ struct _MetaBackendPrivate
MetaInputMapper *input_mapper;
MetaIdleManager *idle_manager;
MetaRenderer *renderer;
MetaColorManager *color_manager;
#ifdef HAVE_EGL
MetaEgl *egl;
#endif
@ -222,6 +223,7 @@ 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
@ -954,6 +956,12 @@ meta_backend_create_monitor_manager (MetaBackend *backend,
error);
}
static MetaColorManager *
meta_backend_create_color_manager (MetaBackend *backend)
{
return META_BACKEND_GET_CLASS (backend)->create_color_manager (backend);
}
static MetaRenderer *
meta_backend_create_renderer (MetaBackend *backend,
GError **error)
@ -1194,6 +1202,8 @@ meta_backend_initable_init (GInitable *initable,
if (!priv->monitor_manager)
return FALSE;
priv->color_manager = meta_backend_create_color_manager (backend);
priv->renderer = meta_backend_create_renderer (backend, error);
if (!priv->renderer)
return FALSE;
@ -1283,6 +1293,17 @@ meta_backend_get_monitor_manager (MetaBackend *backend)
return priv->monitor_manager;
}
/**
* meta_backend_get_color_manager: (skip)
*/
MetaColorManager *
meta_backend_get_color_manager (MetaBackend *backend)
{
MetaBackendPrivate *priv = meta_backend_get_instance_private (backend);
return priv->color_manager;
}
/**
* meta_backend_get_orientation_manager: (skip)
*/