diff --git a/clutter/clutter/clutter-actor.c b/clutter/clutter/clutter-actor.c index 9f9a59462..91d0061c3 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