clutter/color-state: Drop GObject properties

ColorState is inmutable so the GObject properties aren't necessary.

Also move ClutterColorstate and ClutterTransferFunction enums to
color-state.h now that they are not used as GObject properties.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4020>
This commit is contained in:
Joan Torres
2024-09-20 10:21:19 +02:00
committed by Marge Bot
parent dbfacc06bc
commit 8d9c70acda
3 changed files with 34 additions and 260 deletions

View File

@ -57,23 +57,6 @@
#define UNIFORM_NAME_LUMINANCE_MAPPING "luminance_mapping" #define UNIFORM_NAME_LUMINANCE_MAPPING "luminance_mapping"
#define UNIFORM_NAME_COLOR_SPACE_MAPPING "color_space_mapping" #define UNIFORM_NAME_COLOR_SPACE_MAPPING "color_space_mapping"
enum
{
PROP_0,
PROP_CONTEXT,
PROP_COLORSPACE,
PROP_PRIMARIES,
PROP_TRANSFER_FUNCTION,
PROP_MIN_LUMINANCE,
PROP_MAX_LUMINANCE,
PROP_REF_LUMINANCE,
N_PROPS
};
static GParamSpec *obj_props[N_PROPS];
struct _ClutterColorState struct _ClutterColorState
{ {
GObject parent_instance; GObject parent_instance;
@ -283,21 +266,6 @@ clutter_primaries_ensure_normalized_range (ClutterPrimaries *primaries)
primaries->w_y = CLAMP (primaries->w_y, 0.0f, 1.0f); primaries->w_y = CLAMP (primaries->w_y, 0.0f, 1.0f);
} }
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);
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 static void
clutter_color_state_finalize (GObject *object) clutter_color_state_finalize (GObject *object)
{ {
@ -310,199 +278,12 @@ clutter_color_state_finalize (GObject *object)
G_OBJECT_CLASS (clutter_color_state_parent_class)->finalize (object); G_OBJECT_CLASS (clutter_color_state_parent_class)->finalize (object);
} }
static void
clutter_color_state_set_property (GObject *object,
guint prop_id,
const GValue *value,
GParamSpec *pspec)
{
ClutterColorState *color_state = CLUTTER_COLOR_STATE (object);
ClutterColorStatePrivate *priv;
ClutterPrimaries *primaries;
priv = clutter_color_state_get_instance_private (color_state);
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;
case PROP_PRIMARIES:
primaries = g_value_get_pointer (value);
g_clear_pointer (&priv->primaries, g_free);
priv->primaries = g_memdup2 (primaries, sizeof (ClutterPrimaries));
break;
case PROP_TRANSFER_FUNCTION:
priv->transfer_function = g_value_get_enum (value);
break;
case PROP_MIN_LUMINANCE:
priv->min_lum = g_value_get_float (value);
break;
case PROP_MAX_LUMINANCE:
priv->max_lum = g_value_get_float (value);
break;
case PROP_REF_LUMINANCE:
priv->ref_lum = g_value_get_float (value);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
}
}
static void
clutter_color_state_get_property (GObject *object,
guint prop_id,
GValue *value,
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, priv->colorspace);
break;
case PROP_TRANSFER_FUNCTION:
g_value_set_enum (value, priv->transfer_function);
break;
case PROP_MIN_LUMINANCE:
g_value_set_float (value, priv->min_lum);
break;
case PROP_MAX_LUMINANCE:
g_value_set_float (value, priv->max_lum);
break;
case PROP_REF_LUMINANCE:
g_value_set_float (value, priv->ref_lum);
break;
case PROP_PRIMARIES:
g_value_set_pointer (value, priv->primaries);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
}
}
static void static void
clutter_color_state_class_init (ClutterColorStateClass *klass) 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->finalize = clutter_color_state_finalize; gobject_class->finalize = clutter_color_state_finalize;
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:
*
* Colorspace information of the each color state,
* defaults to sRGB colorspace
*/
obj_props[PROP_COLORSPACE] =
g_param_spec_enum ("colorspace", NULL, NULL,
CLUTTER_TYPE_COLORSPACE,
CLUTTER_COLORSPACE_SRGB,
G_PARAM_READWRITE |
G_PARAM_STATIC_STRINGS |
G_PARAM_CONSTRUCT_ONLY);
/**
* ClutterColorState:primaries:
*
* Explicit set of primaries defined as chromaticity coordinates
*/
obj_props[PROP_PRIMARIES] =
g_param_spec_pointer ("primaries", NULL, NULL,
G_PARAM_READWRITE |
G_PARAM_STATIC_STRINGS |
G_PARAM_CONSTRUCT_ONLY);
/**
* ClutterColorState:transfer-function:
*
* Transfer function.
*/
obj_props[PROP_TRANSFER_FUNCTION] =
g_param_spec_enum ("transfer-function", NULL, NULL,
CLUTTER_TYPE_TRANSFER_FUNCTION,
CLUTTER_TRANSFER_FUNCTION_SRGB,
G_PARAM_READWRITE |
G_PARAM_STATIC_STRINGS |
G_PARAM_CONSTRUCT_ONLY);
/**
* ClutterColorState:min-luminance:
*
* Minimum luminance.
*/
obj_props[PROP_MIN_LUMINANCE] =
g_param_spec_float ("min-luminance", NULL, NULL,
-1.0f, 10000.0f, 0.0f,
G_PARAM_READWRITE |
G_PARAM_STATIC_STRINGS |
G_PARAM_CONSTRUCT_ONLY);
/**
* ClutterColorState:max-luminance:
*
* Maximum luminance.
*/
obj_props[PROP_MAX_LUMINANCE] =
g_param_spec_float ("max-luminance", NULL, NULL,
-1.0f, 10000.0f, 0.0f,
G_PARAM_READWRITE |
G_PARAM_STATIC_STRINGS |
G_PARAM_CONSTRUCT_ONLY);
/**
* ClutterColorState:ref-luminance:
*
* Reference luminance.
*/
obj_props[PROP_REF_LUMINANCE] =
g_param_spec_float ("ref-luminance", NULL, NULL,
-1.0f, 10000.0f, 0.0f,
G_PARAM_READWRITE |
G_PARAM_STATIC_STRINGS |
G_PARAM_CONSTRUCT_ONLY);
g_object_class_install_properties (gobject_class, N_PROPS, obj_props);
} }
static void static void
@ -544,15 +325,25 @@ clutter_color_state_new_full (ClutterContext *context,
float max_lum, float max_lum,
float ref_lum) float ref_lum)
{ {
return g_object_new (CLUTTER_TYPE_COLOR_STATE, ClutterColorState *color_state;
"context", context, ClutterColorStatePrivate *priv;
"colorspace", colorspace, ClutterColorManager *color_manager;
"transfer-function", transfer_function,
"primaries", primaries, color_state = g_object_new (CLUTTER_TYPE_COLOR_STATE, NULL);
"min-luminance", min_lum, priv = clutter_color_state_get_instance_private (color_state);
"max-luminance", max_lum, color_manager = clutter_context_get_color_manager (context);
"ref-luminance", ref_lum,
NULL); priv->context = context;
priv->id = clutter_color_manager_get_next_id (color_manager);
priv->colorspace = colorspace;
priv->transfer_function = transfer_function;
priv->primaries = g_memdup2 (primaries, sizeof (*primaries));
priv->min_lum = min_lum;
priv->max_lum = max_lum;
priv->ref_lum = ref_lum;
return color_state;
} }
static const char pq_eotf_source[] = static const char pq_eotf_source[] =

View File

@ -32,6 +32,21 @@
G_BEGIN_DECLS G_BEGIN_DECLS
typedef enum
{
CLUTTER_COLORSPACE_DEFAULT,
CLUTTER_COLORSPACE_SRGB,
CLUTTER_COLORSPACE_BT2020,
} ClutterColorspace;
typedef enum
{
CLUTTER_TRANSFER_FUNCTION_DEFAULT,
CLUTTER_TRANSFER_FUNCTION_SRGB,
CLUTTER_TRANSFER_FUNCTION_PQ,
CLUTTER_TRANSFER_FUNCTION_LINEAR,
} ClutterTransferFunction;
typedef struct _ClutterPrimaries typedef struct _ClutterPrimaries
{ {
float r_x, r_y; float r_x, r_y;

View File

@ -957,38 +957,6 @@ typedef enum
CLUTTER_REPEAT_BOTH = CLUTTER_REPEAT_X_AXIS | CLUTTER_REPEAT_Y_AXIS CLUTTER_REPEAT_BOTH = CLUTTER_REPEAT_X_AXIS | CLUTTER_REPEAT_Y_AXIS
} ClutterContentRepeat; } ClutterContentRepeat;
/**
* ClutterColorspace:
* @CLUTTER_COLORSPACE_DEFAULT: Unknown colorspace
* @CLUTTER_COLORSPACE_SRGB: Default sRGB colorspace
* @CLUTTER_COLORSPACE_BT2020: BT2020 colorspace
*
* Colorspace information.
*/
typedef enum
{
CLUTTER_COLORSPACE_DEFAULT,
CLUTTER_COLORSPACE_SRGB,
CLUTTER_COLORSPACE_BT2020,
} ClutterColorspace;
/**
* ClutterTransferFunction:
* @CLUTTER_TRANSFER_FUNCTION_DEFAULT: Unknown transfer function
* @CLUTTER_TRANSFER_FUNCTION_SRGB: The sRGB gamma transfer function
* @CLUTTER_TRANSFER_FUNCTION_PQ: Perceptual quantizer (PQ)
* @CLUTTER_TRANSFER_FUNCTION_LINEAR: Linear transfer function
*
* Colorspace information.
*/
typedef enum
{
CLUTTER_TRANSFER_FUNCTION_DEFAULT,
CLUTTER_TRANSFER_FUNCTION_SRGB,
CLUTTER_TRANSFER_FUNCTION_PQ,
CLUTTER_TRANSFER_FUNCTION_LINEAR,
} ClutterTransferFunction;
/** /**
* ClutterEncodingRequiredFormat: * ClutterEncodingRequiredFormat:
* @CLUTTER_ENCODING_REQUIRED_FORMAT_UINT8: 8bpc uint * @CLUTTER_ENCODING_REQUIRED_FORMAT_UINT8: 8bpc uint