mirror of
https://github.com/brl/mutter.git
synced 2024-11-22 16:10:41 -05:00
clutter/text: Use named pipelines
Cleanup the static color pipeline in favour of using named pipelines. This is a more modern approach, and helps when tearing down CoglContext. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3007>
This commit is contained in:
parent
8f6ebe4800
commit
52579c545b
@ -283,8 +283,6 @@ static const ClutterColor default_selection_color = { 0, 0, 0, 255 };
|
|||||||
static const ClutterColor default_text_color = { 0, 0, 0, 255 };
|
static const ClutterColor default_text_color = { 0, 0, 0, 255 };
|
||||||
static const ClutterColor default_selected_text_color = { 0, 0, 0, 255 };
|
static const ClutterColor default_selected_text_color = { 0, 0, 0, 255 };
|
||||||
|
|
||||||
static CoglPipeline *default_color_pipeline = NULL;
|
|
||||||
|
|
||||||
static ClutterAnimatableInterface *parent_animatable_iface = NULL;
|
static ClutterAnimatableInterface *parent_animatable_iface = NULL;
|
||||||
static ClutterScriptableIface *parent_scriptable_iface = NULL;
|
static ClutterScriptableIface *parent_scriptable_iface = NULL;
|
||||||
|
|
||||||
@ -1885,6 +1883,28 @@ clutter_text_foreach_selection_rectangle (ClutterText *self,
|
|||||||
g_free (utf8);
|
g_free (utf8);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static CoglPipeline *
|
||||||
|
create_color_pipeline (void)
|
||||||
|
{
|
||||||
|
static CoglPipelineKey color_pipeline_key = "clutter-text-color-pipeline-private";
|
||||||
|
CoglContext *ctx =
|
||||||
|
clutter_backend_get_cogl_context (clutter_get_default_backend ());
|
||||||
|
CoglPipeline *color_pipeline;
|
||||||
|
|
||||||
|
color_pipeline =
|
||||||
|
cogl_context_get_named_pipeline (ctx, &color_pipeline_key);
|
||||||
|
|
||||||
|
if (G_UNLIKELY (color_pipeline == NULL))
|
||||||
|
{
|
||||||
|
color_pipeline = cogl_pipeline_new (ctx);
|
||||||
|
cogl_context_set_named_pipeline (ctx,
|
||||||
|
&color_pipeline_key,
|
||||||
|
color_pipeline);
|
||||||
|
}
|
||||||
|
|
||||||
|
return cogl_pipeline_copy (color_pipeline);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
clutter_text_foreach_selection_rectangle_prescaled (ClutterText *self,
|
clutter_text_foreach_selection_rectangle_prescaled (ClutterText *self,
|
||||||
ClutterTextSelectionFunc func,
|
ClutterTextSelectionFunc func,
|
||||||
@ -1902,7 +1922,7 @@ paint_selection_rectangle (ClutterText *self,
|
|||||||
ClutterTextPrivate *priv = self->priv;
|
ClutterTextPrivate *priv = self->priv;
|
||||||
ClutterActor *actor = CLUTTER_ACTOR (self);
|
ClutterActor *actor = CLUTTER_ACTOR (self);
|
||||||
guint8 paint_opacity = clutter_actor_get_paint_opacity (actor);
|
guint8 paint_opacity = clutter_actor_get_paint_opacity (actor);
|
||||||
CoglPipeline *color_pipeline = cogl_pipeline_copy (default_color_pipeline);
|
CoglPipeline *color_pipeline = create_color_pipeline ();
|
||||||
PangoLayout *layout = clutter_text_get_layout (self);
|
PangoLayout *layout = clutter_text_get_layout (self);
|
||||||
CoglColor cogl_color = { 0, };
|
CoglColor cogl_color = { 0, };
|
||||||
const ClutterColor *color;
|
const ClutterColor *color;
|
||||||
@ -1962,7 +1982,7 @@ selection_paint (ClutterText *self,
|
|||||||
|
|
||||||
if (priv->position == priv->selection_bound)
|
if (priv->position == priv->selection_bound)
|
||||||
{
|
{
|
||||||
CoglPipeline *color_pipeline = cogl_pipeline_copy (default_color_pipeline);
|
CoglPipeline *color_pipeline = create_color_pipeline ();
|
||||||
CoglColor cogl_color;
|
CoglColor cogl_color;
|
||||||
|
|
||||||
/* No selection, just draw the cursor */
|
/* No selection, just draw the cursor */
|
||||||
@ -2600,13 +2620,6 @@ clutter_text_paint (ClutterActor *self,
|
|||||||
|
|
||||||
clutter_actor_get_allocation_box (self, &alloc);
|
clutter_actor_get_allocation_box (self, &alloc);
|
||||||
|
|
||||||
if (G_UNLIKELY (default_color_pipeline == NULL))
|
|
||||||
{
|
|
||||||
CoglContext *ctx =
|
|
||||||
clutter_backend_get_cogl_context (clutter_get_default_backend ());
|
|
||||||
default_color_pipeline = cogl_pipeline_new (ctx);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* don't bother painting an empty text actor, unless it's
|
/* don't bother painting an empty text actor, unless it's
|
||||||
* editable, in which case we want to paint at least the
|
* editable, in which case we want to paint at least the
|
||||||
* cursor
|
* cursor
|
||||||
|
Loading…
Reference in New Issue
Block a user