diff --git a/clutter/clutter/clutter-actor.c b/clutter/clutter/clutter-actor.c index bb3258d9e..acd7a2c80 100644 --- a/clutter/clutter/clutter-actor.c +++ b/clutter/clutter/clutter-actor.c @@ -17844,7 +17844,8 @@ create_default_color_state (ClutterActor *self) { ClutterColorState *color_state; - color_state = clutter_color_state_new (CLUTTER_COLORSPACE_DEFAULT, + color_state = clutter_color_state_new (clutter_actor_get_context (self), + CLUTTER_COLORSPACE_DEFAULT, CLUTTER_TRANSFER_FUNCTION_DEFAULT); return color_state; diff --git a/clutter/clutter/clutter-color-state.c b/clutter/clutter/clutter-color-state.c index 273ecc6fe..2af45a64f 100644 --- a/clutter/clutter/clutter-color-state.c +++ b/clutter/clutter/clutter-color-state.c @@ -57,6 +57,7 @@ enum { PROP_0, + PROP_CONTEXT, PROP_COLORSPACE, PROP_TRANSFER_FUNCTION, @@ -74,6 +75,8 @@ struct _ClutterColorState struct _ClutterColorStatePrivate { + ClutterContext *context; + ClutterColorspace colorspace; ClutterTransferFunction transfer_function; }; @@ -142,6 +145,16 @@ clutter_color_state_get_transfer_function (ClutterColorState *color_state) return priv->transfer_function; } +static void +clutter_color_state_constructed (GObject *object) +{ + ClutterColorState *color_state = CLUTTER_COLOR_STATE (object); + ClutterColorStatePrivate *priv = + clutter_color_state_get_instance_private (color_state); + + g_warn_if_fail (priv->context); +} + static void clutter_color_state_set_property (GObject *object, guint prop_id, @@ -155,6 +168,10 @@ clutter_color_state_set_property (GObject *object, switch (prop_id) { + case PROP_CONTEXT: + priv->context = g_value_get_object (value); + break; + case PROP_COLORSPACE: priv->colorspace = g_value_get_enum (value); break; @@ -176,9 +193,15 @@ clutter_color_state_get_property (GObject *object, GParamSpec *pspec) { ClutterColorState *color_state = CLUTTER_COLOR_STATE (object); + ClutterColorStatePrivate *priv = + clutter_color_state_get_instance_private (color_state); switch (prop_id) { + case PROP_CONTEXT: + g_value_set_object (value, priv->context); + break; + case PROP_COLORSPACE: g_value_set_enum (value, clutter_color_state_get_colorspace (color_state)); @@ -200,9 +223,22 @@ clutter_color_state_class_init (ClutterColorStateClass *klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + gobject_class->constructed = clutter_color_state_constructed; gobject_class->set_property = clutter_color_state_set_property; gobject_class->get_property = clutter_color_state_get_property; + /** + * ClutterColorState:context: + * + * The associated ClutterContext. + */ + obj_props[PROP_CONTEXT] = + g_param_spec_object ("context", NULL, NULL, + CLUTTER_TYPE_CONTEXT, + G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS | + G_PARAM_CONSTRUCT_ONLY); + /** * ClutterColorState:colorspace: * @@ -246,10 +282,12 @@ clutter_color_state_init (ClutterColorState *color_state) * Return value: A new ClutterColorState object. **/ ClutterColorState * -clutter_color_state_new (ClutterColorspace colorspace, - ClutterTransferFunction transfer_function) +clutter_color_state_new (ClutterContext *context, + ClutterColorspace colorspace, + ClutterTransferFunction transfer_function) { return g_object_new (CLUTTER_TYPE_COLOR_STATE, + "context", context, "colorspace", colorspace, "transfer-function", transfer_function, NULL); diff --git a/clutter/clutter/clutter-color-state.h b/clutter/clutter/clutter-color-state.h index dbca0fd21..1a7167f31 100644 --- a/clutter/clutter/clutter-color-state.h +++ b/clutter/clutter/clutter-color-state.h @@ -39,8 +39,9 @@ G_DECLARE_FINAL_TYPE (ClutterColorState, clutter_color_state, GObject) CLUTTER_EXPORT -ClutterColorState * clutter_color_state_new (ClutterColorspace colorspace, - ClutterTransferFunction transfer_function); +ClutterColorState * clutter_color_state_new (ClutterContext *context, + ClutterColorspace colorspace, + ClutterTransferFunction transfer_function); CLUTTER_EXPORT ClutterColorspace clutter_color_state_get_colorspace (ClutterColorState *color_state); diff --git a/src/backends/meta-stage.c b/src/backends/meta-stage.c index 98283dbfd..ffa53fd46 100644 --- a/src/backends/meta-stage.c +++ b/src/backends/meta-stage.c @@ -358,7 +358,9 @@ meta_stage_new (MetaBackend *backend) MetaStage *stage; MetaMonitorManager *monitor_manager; - stage = g_object_new (META_TYPE_STAGE, NULL); + stage = g_object_new (META_TYPE_STAGE, + "context", meta_backend_get_clutter_context (backend), + NULL); stage->backend = backend; monitor_manager = meta_backend_get_monitor_manager (backend); diff --git a/src/tests/clutter/conform/actor-color-state.c b/src/tests/clutter/conform/actor-color-state.c index fdb47e81f..7782e38a7 100644 --- a/src/tests/clutter/conform/actor-color-state.c +++ b/src/tests/clutter/conform/actor-color-state.c @@ -46,12 +46,14 @@ actor_color_state_default (void) static void actor_color_state_passed (void) { + ClutterContext *context = clutter_test_get_context (); ClutterActor *actor; ClutterColorState *color_state; ClutterColorspace colorspace; ClutterTransferFunction transfer_function; - color_state = clutter_color_state_new (CLUTTER_COLORSPACE_BT2020, + color_state = clutter_color_state_new (context, + CLUTTER_COLORSPACE_BT2020, CLUTTER_TRANSFER_FUNCTION_PQ); if (!color_state) @@ -81,6 +83,7 @@ actor_color_state_passed (void) static void actor_change_color_state (void) { + ClutterContext *context = clutter_test_get_context (); ClutterActor *actor; ClutterColorState *color_state; ClutterColorspace colorspace; @@ -88,7 +91,8 @@ actor_change_color_state (void) actor = clutter_actor_new (); - color_state = clutter_color_state_new (CLUTTER_COLORSPACE_BT2020, + color_state = clutter_color_state_new (context, + CLUTTER_COLORSPACE_BT2020, CLUTTER_TRANSFER_FUNCTION_PQ); if (!color_state)