clutter/color-state: Pass the ClutterContext when constructing
This will be used to cache pipeline snippets shared by multiple color states. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3433>
This commit is contained in:
parent
4a07242fed
commit
d7bbc9712f
@ -17844,7 +17844,8 @@ create_default_color_state (ClutterActor *self)
|
|||||||
{
|
{
|
||||||
ClutterColorState *color_state;
|
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);
|
CLUTTER_TRANSFER_FUNCTION_DEFAULT);
|
||||||
|
|
||||||
return color_state;
|
return color_state;
|
||||||
|
@ -57,6 +57,7 @@ enum
|
|||||||
{
|
{
|
||||||
PROP_0,
|
PROP_0,
|
||||||
|
|
||||||
|
PROP_CONTEXT,
|
||||||
PROP_COLORSPACE,
|
PROP_COLORSPACE,
|
||||||
PROP_TRANSFER_FUNCTION,
|
PROP_TRANSFER_FUNCTION,
|
||||||
|
|
||||||
@ -74,6 +75,8 @@ struct _ClutterColorState
|
|||||||
|
|
||||||
struct _ClutterColorStatePrivate
|
struct _ClutterColorStatePrivate
|
||||||
{
|
{
|
||||||
|
ClutterContext *context;
|
||||||
|
|
||||||
ClutterColorspace colorspace;
|
ClutterColorspace colorspace;
|
||||||
ClutterTransferFunction transfer_function;
|
ClutterTransferFunction transfer_function;
|
||||||
};
|
};
|
||||||
@ -142,6 +145,16 @@ clutter_color_state_get_transfer_function (ClutterColorState *color_state)
|
|||||||
return priv->transfer_function;
|
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
|
static void
|
||||||
clutter_color_state_set_property (GObject *object,
|
clutter_color_state_set_property (GObject *object,
|
||||||
guint prop_id,
|
guint prop_id,
|
||||||
@ -155,6 +168,10 @@ clutter_color_state_set_property (GObject *object,
|
|||||||
|
|
||||||
switch (prop_id)
|
switch (prop_id)
|
||||||
{
|
{
|
||||||
|
case PROP_CONTEXT:
|
||||||
|
priv->context = g_value_get_object (value);
|
||||||
|
break;
|
||||||
|
|
||||||
case PROP_COLORSPACE:
|
case PROP_COLORSPACE:
|
||||||
priv->colorspace = g_value_get_enum (value);
|
priv->colorspace = g_value_get_enum (value);
|
||||||
break;
|
break;
|
||||||
@ -176,9 +193,15 @@ clutter_color_state_get_property (GObject *object,
|
|||||||
GParamSpec *pspec)
|
GParamSpec *pspec)
|
||||||
{
|
{
|
||||||
ClutterColorState *color_state = CLUTTER_COLOR_STATE (object);
|
ClutterColorState *color_state = CLUTTER_COLOR_STATE (object);
|
||||||
|
ClutterColorStatePrivate *priv =
|
||||||
|
clutter_color_state_get_instance_private (color_state);
|
||||||
|
|
||||||
switch (prop_id)
|
switch (prop_id)
|
||||||
{
|
{
|
||||||
|
case PROP_CONTEXT:
|
||||||
|
g_value_set_object (value, priv->context);
|
||||||
|
break;
|
||||||
|
|
||||||
case PROP_COLORSPACE:
|
case PROP_COLORSPACE:
|
||||||
g_value_set_enum (value,
|
g_value_set_enum (value,
|
||||||
clutter_color_state_get_colorspace (color_state));
|
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);
|
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->set_property = clutter_color_state_set_property;
|
||||||
gobject_class->get_property = clutter_color_state_get_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:
|
* ClutterColorState:colorspace:
|
||||||
*
|
*
|
||||||
@ -246,10 +282,12 @@ clutter_color_state_init (ClutterColorState *color_state)
|
|||||||
* Return value: A new ClutterColorState object.
|
* Return value: A new ClutterColorState object.
|
||||||
**/
|
**/
|
||||||
ClutterColorState *
|
ClutterColorState *
|
||||||
clutter_color_state_new (ClutterColorspace colorspace,
|
clutter_color_state_new (ClutterContext *context,
|
||||||
|
ClutterColorspace colorspace,
|
||||||
ClutterTransferFunction transfer_function)
|
ClutterTransferFunction transfer_function)
|
||||||
{
|
{
|
||||||
return g_object_new (CLUTTER_TYPE_COLOR_STATE,
|
return g_object_new (CLUTTER_TYPE_COLOR_STATE,
|
||||||
|
"context", context,
|
||||||
"colorspace", colorspace,
|
"colorspace", colorspace,
|
||||||
"transfer-function", transfer_function,
|
"transfer-function", transfer_function,
|
||||||
NULL);
|
NULL);
|
||||||
|
@ -39,7 +39,8 @@ G_DECLARE_FINAL_TYPE (ClutterColorState, clutter_color_state,
|
|||||||
GObject)
|
GObject)
|
||||||
|
|
||||||
CLUTTER_EXPORT
|
CLUTTER_EXPORT
|
||||||
ClutterColorState * clutter_color_state_new (ClutterColorspace colorspace,
|
ClutterColorState * clutter_color_state_new (ClutterContext *context,
|
||||||
|
ClutterColorspace colorspace,
|
||||||
ClutterTransferFunction transfer_function);
|
ClutterTransferFunction transfer_function);
|
||||||
|
|
||||||
CLUTTER_EXPORT
|
CLUTTER_EXPORT
|
||||||
|
@ -358,7 +358,9 @@ meta_stage_new (MetaBackend *backend)
|
|||||||
MetaStage *stage;
|
MetaStage *stage;
|
||||||
MetaMonitorManager *monitor_manager;
|
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;
|
stage->backend = backend;
|
||||||
|
|
||||||
monitor_manager = meta_backend_get_monitor_manager (backend);
|
monitor_manager = meta_backend_get_monitor_manager (backend);
|
||||||
|
@ -46,12 +46,14 @@ actor_color_state_default (void)
|
|||||||
static void
|
static void
|
||||||
actor_color_state_passed (void)
|
actor_color_state_passed (void)
|
||||||
{
|
{
|
||||||
|
ClutterContext *context = clutter_test_get_context ();
|
||||||
ClutterActor *actor;
|
ClutterActor *actor;
|
||||||
ClutterColorState *color_state;
|
ClutterColorState *color_state;
|
||||||
ClutterColorspace colorspace;
|
ClutterColorspace colorspace;
|
||||||
ClutterTransferFunction transfer_function;
|
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);
|
CLUTTER_TRANSFER_FUNCTION_PQ);
|
||||||
|
|
||||||
if (!color_state)
|
if (!color_state)
|
||||||
@ -81,6 +83,7 @@ actor_color_state_passed (void)
|
|||||||
static void
|
static void
|
||||||
actor_change_color_state (void)
|
actor_change_color_state (void)
|
||||||
{
|
{
|
||||||
|
ClutterContext *context = clutter_test_get_context ();
|
||||||
ClutterActor *actor;
|
ClutterActor *actor;
|
||||||
ClutterColorState *color_state;
|
ClutterColorState *color_state;
|
||||||
ClutterColorspace colorspace;
|
ClutterColorspace colorspace;
|
||||||
@ -88,7 +91,8 @@ actor_change_color_state (void)
|
|||||||
|
|
||||||
actor = clutter_actor_new ();
|
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);
|
CLUTTER_TRANSFER_FUNCTION_PQ);
|
||||||
|
|
||||||
if (!color_state)
|
if (!color_state)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user