summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorges Basile Stavracas Neto <georges.stavracas@gmail.com>2020-07-05 19:17:09 -0300
committerGeorges Basile Stavracas Neto <georges.stavracas@gmail.com>2020-12-08 18:08:27 -0300
commit4ee56660f99fe2a7dcfc993f22ccc471484e0589 (patch)
tree4caa40f9032f7be9bb7e7061db86b07c8c5c9c60
parent0ad9da8b7490aa6d29f9b9e8ed7874afb4528e69 (diff)
downloadmutter-gbsneto/offscreen-paint-node.tar.gz
clutter/effect: Move ClutterEffect creation to ClutterActorgbsneto/offscreen-paint-node
As so paint node creation is centralized in a single function.
-rw-r--r--clutter/clutter/clutter-actor.c10
-rw-r--r--clutter/clutter/clutter-effect-private.h1
-rw-r--r--clutter/clutter/clutter-effect.c8
3 files changed, 11 insertions, 8 deletions
diff --git a/clutter/clutter/clutter-actor.c b/clutter/clutter/clutter-actor.c
index 5deeae6d0..321f49fb3 100644
--- a/clutter/clutter/clutter-actor.c
+++ b/clutter/clutter/clutter-actor.c
@@ -3895,6 +3895,7 @@ clutter_actor_continue_paint (ClutterActor *self,
}
else
{
+ g_autoptr (ClutterPaintNode) effect_node = NULL;
ClutterEffect *old_current_effect;
ClutterEffectPaintFlags run_flags = 0;
@@ -3923,7 +3924,14 @@ clutter_actor_continue_paint (ClutterActor *self,
run_flags & CLUTTER_EFFECT_PAINT_ACTOR_DIRTY)
run_flags |= CLUTTER_EFFECT_PAINT_BYPASS_EFFECT;
- _clutter_effect_paint (priv->current_effect, paint_context, run_flags);
+ effect_node = clutter_effect_node_new (priv->current_effect);
+
+ _clutter_effect_paint (priv->current_effect,
+ effect_node,
+ paint_context,
+ run_flags);
+
+ clutter_paint_node_paint (effect_node, paint_context);
priv->current_effect = old_current_effect;
}
diff --git a/clutter/clutter/clutter-effect-private.h b/clutter/clutter/clutter-effect-private.h
index ec2e82ba4..85a32552f 100644
--- a/clutter/clutter/clutter-effect-private.h
+++ b/clutter/clutter/clutter-effect-private.h
@@ -9,6 +9,7 @@ gboolean _clutter_effect_modify_paint_volume (ClutterEffect
ClutterPaintVolume *volume);
gboolean _clutter_effect_has_custom_paint_volume (ClutterEffect *effect);
void _clutter_effect_paint (ClutterEffect *effect,
+ ClutterPaintNode *node,
ClutterPaintContext *paint_context,
ClutterEffectPaintFlags flags);
void _clutter_effect_pick (ClutterEffect *effect,
diff --git a/clutter/clutter/clutter-effect.c b/clutter/clutter/clutter-effect.c
index 4e33cca45..3c9d8efd5 100644
--- a/clutter/clutter/clutter-effect.c
+++ b/clutter/clutter/clutter-effect.c
@@ -285,22 +285,16 @@ clutter_effect_init (ClutterEffect *self)
void
_clutter_effect_paint (ClutterEffect *effect,
+ ClutterPaintNode *node,
ClutterPaintContext *paint_context,
ClutterEffectPaintFlags flags)
{
- ClutterPaintNode *node;
-
g_return_if_fail (CLUTTER_IS_EFFECT (effect));
- node = clutter_effect_node_new (effect);
-
CLUTTER_EFFECT_GET_CLASS (effect)->paint (effect,
node,
paint_context,
flags);
-
- clutter_paint_node_paint (node, paint_context);
- clutter_paint_node_unref (node);
}
void