diff --git a/clutter/clutter/clutter-actor.c b/clutter/clutter/clutter-actor.c index 50b05d734..6d45dec15 100644 --- a/clutter/clutter/clutter-actor.c +++ b/clutter/clutter/clutter-actor.c @@ -17845,13 +17845,13 @@ clutter_actor_get_content_repeat (ClutterActor *self) } static ClutterColorState * -create_default_color_state (ClutterActor *self) +get_default_color_state (ClutterActor *self) { - ClutterColorState *color_state; - - color_state = clutter_color_state_new (clutter_actor_get_context (self), - CLUTTER_COLORSPACE_DEFAULT, - CLUTTER_TRANSFER_FUNCTION_DEFAULT); + ClutterContext *context = clutter_actor_get_context (self); + ClutterColorManager *color_manager = + clutter_context_get_color_manager (context); + ClutterColorState *color_state = + clutter_color_manager_get_default_color_state (color_manager); return color_state; } @@ -17875,11 +17875,11 @@ clutter_actor_set_color_state_internal (ClutterActor *self, void clutter_actor_unset_color_state (ClutterActor *self) { - g_autoptr (ClutterColorState) default_color_state = NULL; + ClutterColorState *default_color_state; g_return_if_fail (CLUTTER_IS_ACTOR (self)); - default_color_state = create_default_color_state (self); + default_color_state = get_default_color_state (self); clutter_actor_set_color_state_internal (self, default_color_state); } diff --git a/clutter/clutter/clutter-color-manager.c b/clutter/clutter/clutter-color-manager.c index 9a52422c7..99c7e7418 100644 --- a/clutter/clutter/clutter-color-manager.c +++ b/clutter/clutter/clutter-color-manager.c @@ -46,6 +46,7 @@ struct _ClutterColorManager GHashTable *snippet_cache; unsigned int id_counter; + ClutterColorState *default_color_state; }; G_DEFINE_FINAL_TYPE (ClutterColorManager, clutter_color_manager, G_TYPE_OBJECT) @@ -140,6 +141,20 @@ clutter_color_manager_get_next_id (ClutterColorManager *color_manager) return ++color_manager->id_counter; } +ClutterColorState * +clutter_color_manager_get_default_color_state (ClutterColorManager *color_manager) +{ + if (!color_manager->default_color_state) + { + color_manager->default_color_state = + clutter_color_state_new (color_manager->context, + CLUTTER_COLORSPACE_DEFAULT, + CLUTTER_TRANSFER_FUNCTION_DEFAULT); + } + + return color_manager->default_color_state; +} + CoglSnippet * clutter_color_manager_lookup_snippet (ClutterColorManager *color_manager, const ClutterColorTransformKey *key) diff --git a/clutter/clutter/clutter-color-manager.h b/clutter/clutter/clutter-color-manager.h index 9ad47bf19..5b8ef9e09 100644 --- a/clutter/clutter/clutter-color-manager.h +++ b/clutter/clutter/clutter-color-manager.h @@ -32,3 +32,9 @@ CLUTTER_EXPORT G_DECLARE_FINAL_TYPE (ClutterColorManager, clutter_color_manager, CLUTTER, COLOR_MANAGER, GObject) + +/** + * clutter_color_manager_get_default_color_state: (skip) + */ +CLUTTER_EXPORT +ClutterColorState * clutter_color_manager_get_default_color_state (ClutterColorManager *color_manager); diff --git a/src/backends/meta-cursor-sprite-xcursor.c b/src/backends/meta-cursor-sprite-xcursor.c index 4364cc3fb..388d2d74b 100644 --- a/src/backends/meta-cursor-sprite-xcursor.c +++ b/src/backends/meta-cursor-sprite-xcursor.c @@ -383,13 +383,15 @@ ensure_xcursor_color_state (MetaCursorTracker *cursor_tracker) meta_cursor_tracker_get_backend (cursor_tracker); ClutterContext *clutter_context = meta_backend_get_clutter_context (backend); + ClutterColorManager *color_manager = + clutter_context_get_color_manager (clutter_context); + + color_state = clutter_color_manager_get_default_color_state (color_manager); - color_state = clutter_color_state_new (clutter_context, - CLUTTER_COLORSPACE_DEFAULT, - CLUTTER_TRANSFER_FUNCTION_DEFAULT); g_object_set_qdata_full (G_OBJECT (cursor_tracker), GPOINTER_TO_INT (quark_once.retval), - color_state, g_object_unref); + g_object_ref (color_state), + g_object_unref); } return color_state; diff --git a/src/wayland/meta-cursor-sprite-wayland.c b/src/wayland/meta-cursor-sprite-wayland.c index b24a533f8..7e146b398 100644 --- a/src/wayland/meta-cursor-sprite-wayland.c +++ b/src/wayland/meta-cursor-sprite-wayland.c @@ -82,13 +82,15 @@ ensure_default_color_state (MetaCursorTracker *cursor_tracker) meta_cursor_tracker_get_backend (cursor_tracker); ClutterContext *clutter_context = meta_backend_get_clutter_context (backend); + ClutterColorManager *color_manager = + clutter_context_get_color_manager (clutter_context); + + color_state = clutter_color_manager_get_default_color_state (color_manager); - color_state = clutter_color_state_new (clutter_context, - CLUTTER_COLORSPACE_DEFAULT, - CLUTTER_TRANSFER_FUNCTION_DEFAULT); g_object_set_qdata_full (G_OBJECT (cursor_tracker), GPOINTER_TO_INT (quark_once.retval), - color_state, g_object_unref); + g_object_ref (color_state), + g_object_unref); } return color_state;