diff --git a/clutter/clutter/clutter-color-manager-private.h b/clutter/clutter/clutter-color-manager-private.h index 9645ecaef..2227a819f 100644 --- a/clutter/clutter/clutter-color-manager-private.h +++ b/clutter/clutter/clutter-color-manager-private.h @@ -25,6 +25,8 @@ #include "clutter/clutter-color-manager.h" #include "clutter/clutter-private.h" +unsigned int clutter_color_manager_get_next_id (ClutterColorManager *color_manager); + CoglSnippet * clutter_color_manager_lookup_snippet (ClutterColorManager *color_manager, const ClutterColorTransformKey *key); diff --git a/clutter/clutter/clutter-color-manager.c b/clutter/clutter/clutter-color-manager.c index c9d83175d..9a52422c7 100644 --- a/clutter/clutter/clutter-color-manager.c +++ b/clutter/clutter/clutter-color-manager.c @@ -45,6 +45,7 @@ struct _ClutterColorManager ClutterContext *context; GHashTable *snippet_cache; + unsigned int id_counter; }; G_DEFINE_FINAL_TYPE (ClutterColorManager, clutter_color_manager, G_TYPE_OBJECT) @@ -133,6 +134,12 @@ clutter_color_manager_init (ClutterColorManager *color_manager) g_object_unref); } +unsigned int +clutter_color_manager_get_next_id (ClutterColorManager *color_manager) +{ + return ++color_manager->id_counter; +} + CoglSnippet * clutter_color_manager_lookup_snippet (ClutterColorManager *color_manager, const ClutterColorTransformKey *key) diff --git a/clutter/clutter/clutter-color-state.c b/clutter/clutter/clutter-color-state.c index dcad2919b..fda04cc8b 100644 --- a/clutter/clutter/clutter-color-state.c +++ b/clutter/clutter/clutter-color-state.c @@ -67,20 +67,19 @@ enum static GParamSpec *obj_props[N_PROPS]; -typedef struct _ClutterColorStatePrivate ClutterColorStatePrivate; - struct _ClutterColorState { GObject parent_instance; }; -struct _ClutterColorStatePrivate +typedef struct _ClutterColorStatePrivate { ClutterContext *context; + unsigned int id; ClutterColorspace colorspace; ClutterTransferFunction transfer_function; -}; +} ClutterColorStatePrivate; G_DEFINE_TYPE_WITH_PRIVATE (ClutterColorState, clutter_color_state, @@ -160,6 +159,18 @@ clutter_transfer_function_to_string (ClutterTransferFunction transfer_function) g_assert_not_reached (); } +unsigned int +clutter_color_state_get_id (ClutterColorState *color_state) +{ + ClutterColorStatePrivate *priv; + + g_return_val_if_fail (CLUTTER_IS_COLOR_STATE (color_state), 0); + + priv = clutter_color_state_get_instance_private (color_state); + + return priv->id; +} + ClutterColorspace clutter_color_state_get_colorspace (ClutterColorState *color_state) { @@ -192,8 +203,13 @@ clutter_color_state_constructed (GObject *object) ClutterColorState *color_state = CLUTTER_COLOR_STATE (object); ClutterColorStatePrivate *priv = clutter_color_state_get_instance_private (color_state); + ClutterColorManager *color_manager; g_warn_if_fail (priv->context); + + color_manager = clutter_context_get_color_manager (priv->context); + + priv->id = clutter_color_manager_get_next_id (color_manager); } static void diff --git a/clutter/clutter/clutter-color-state.h b/clutter/clutter/clutter-color-state.h index 7ae617dd3..d1b70ab02 100644 --- a/clutter/clutter/clutter-color-state.h +++ b/clutter/clutter/clutter-color-state.h @@ -43,6 +43,9 @@ ClutterColorState * clutter_color_state_new (ClutterContext *context, ClutterColorspace colorspace, ClutterTransferFunction transfer_function); +CLUTTER_EXPORT +unsigned int clutter_color_state_get_id (ClutterColorState *color_state); + CLUTTER_EXPORT ClutterColorspace clutter_color_state_get_colorspace (ClutterColorState *color_state);