[mutter/gbsneto/offscreen-paint-node: 11/11] clutter/effect: Move ClutterEffect creation to ClutterActor




commit 9e25028ca4b68155c9a1542cebf5b7157de6b29c
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date:   Sun Jul 5 19:17:09 2020 -0300

    clutter/effect: Move ClutterEffect creation to ClutterActor
    
    As so paint node creation is centralized in a single function.
    
    Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1355>

 clutter/clutter/clutter-actor.c          | 10 +++++++++-
 clutter/clutter/clutter-effect-private.h |  1 +
 clutter/clutter/clutter-effect.c         |  8 +-------
 3 files changed, 11 insertions(+), 8 deletions(-)
---
diff --git a/clutter/clutter/clutter-actor.c b/clutter/clutter/clutter-actor.c
index 9f9a594623..91d0061c3f 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 ec2e82ba46..85a32552f0 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 4e33cca45d..3c9d8efd5d 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


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]