clutter/color-state: Adds an ID to ColorStates
The ID is required for the wayland protocol. In the future we might want to spend a bit more effort to re-use existing color states when a new one is requested and also try to re-use IDs instead of just counting up. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3897>
This commit is contained in:
parent
75baecb3d9
commit
58cb44186d
@ -25,6 +25,8 @@
|
|||||||
#include "clutter/clutter-color-manager.h"
|
#include "clutter/clutter-color-manager.h"
|
||||||
#include "clutter/clutter-private.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,
|
CoglSnippet * clutter_color_manager_lookup_snippet (ClutterColorManager *color_manager,
|
||||||
const ClutterColorTransformKey *key);
|
const ClutterColorTransformKey *key);
|
||||||
|
|
||||||
|
@ -45,6 +45,7 @@ struct _ClutterColorManager
|
|||||||
ClutterContext *context;
|
ClutterContext *context;
|
||||||
|
|
||||||
GHashTable *snippet_cache;
|
GHashTable *snippet_cache;
|
||||||
|
unsigned int id_counter;
|
||||||
};
|
};
|
||||||
|
|
||||||
G_DEFINE_FINAL_TYPE (ClutterColorManager, clutter_color_manager, G_TYPE_OBJECT)
|
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);
|
g_object_unref);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unsigned int
|
||||||
|
clutter_color_manager_get_next_id (ClutterColorManager *color_manager)
|
||||||
|
{
|
||||||
|
return ++color_manager->id_counter;
|
||||||
|
}
|
||||||
|
|
||||||
CoglSnippet *
|
CoglSnippet *
|
||||||
clutter_color_manager_lookup_snippet (ClutterColorManager *color_manager,
|
clutter_color_manager_lookup_snippet (ClutterColorManager *color_manager,
|
||||||
const ClutterColorTransformKey *key)
|
const ClutterColorTransformKey *key)
|
||||||
|
@ -67,20 +67,19 @@ enum
|
|||||||
|
|
||||||
static GParamSpec *obj_props[N_PROPS];
|
static GParamSpec *obj_props[N_PROPS];
|
||||||
|
|
||||||
typedef struct _ClutterColorStatePrivate ClutterColorStatePrivate;
|
|
||||||
|
|
||||||
struct _ClutterColorState
|
struct _ClutterColorState
|
||||||
{
|
{
|
||||||
GObject parent_instance;
|
GObject parent_instance;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct _ClutterColorStatePrivate
|
typedef struct _ClutterColorStatePrivate
|
||||||
{
|
{
|
||||||
ClutterContext *context;
|
ClutterContext *context;
|
||||||
|
|
||||||
|
unsigned int id;
|
||||||
ClutterColorspace colorspace;
|
ClutterColorspace colorspace;
|
||||||
ClutterTransferFunction transfer_function;
|
ClutterTransferFunction transfer_function;
|
||||||
};
|
} ClutterColorStatePrivate;
|
||||||
|
|
||||||
G_DEFINE_TYPE_WITH_PRIVATE (ClutterColorState,
|
G_DEFINE_TYPE_WITH_PRIVATE (ClutterColorState,
|
||||||
clutter_color_state,
|
clutter_color_state,
|
||||||
@ -160,6 +159,18 @@ clutter_transfer_function_to_string (ClutterTransferFunction transfer_function)
|
|||||||
g_assert_not_reached ();
|
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
|
ClutterColorspace
|
||||||
clutter_color_state_get_colorspace (ClutterColorState *color_state)
|
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);
|
ClutterColorState *color_state = CLUTTER_COLOR_STATE (object);
|
||||||
ClutterColorStatePrivate *priv =
|
ClutterColorStatePrivate *priv =
|
||||||
clutter_color_state_get_instance_private (color_state);
|
clutter_color_state_get_instance_private (color_state);
|
||||||
|
ClutterColorManager *color_manager;
|
||||||
|
|
||||||
g_warn_if_fail (priv->context);
|
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
|
||||||
|
@ -43,6 +43,9 @@ ClutterColorState * clutter_color_state_new (ClutterContext *context,
|
|||||||
ClutterColorspace colorspace,
|
ClutterColorspace colorspace,
|
||||||
ClutterTransferFunction transfer_function);
|
ClutterTransferFunction transfer_function);
|
||||||
|
|
||||||
|
CLUTTER_EXPORT
|
||||||
|
unsigned int clutter_color_state_get_id (ClutterColorState *color_state);
|
||||||
|
|
||||||
CLUTTER_EXPORT
|
CLUTTER_EXPORT
|
||||||
ClutterColorspace clutter_color_state_get_colorspace (ClutterColorState *color_state);
|
ClutterColorspace clutter_color_state_get_colorspace (ClutterColorState *color_state);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user