[mutter/gbsneto/offscreen-paint-node: 1/11] clutter/paint-nodes: Make ClutterLayerNode always push/pop




commit 6654053250890c928f6165055a44c2dbf13889c0
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date:   Tue Dec 8 15:11:51 2020 -0300

    clutter/paint-nodes: Make ClutterLayerNode always push/pop
    
    ClutterLayerNode currently skips pushing the offscreen framebuffer when
    no operations are set. This was added at the time because pushing and
    popping was a synchronization point in Cogl, slow enough to force the
    layer node to have this protective measure. Nowadays, pushing and
    popping on the paint context is free.
    
    Make ClutterLayerNode always push and pop in pre and post paint.
    
    Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1355>

 clutter/clutter/clutter-paint-nodes.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)
---
diff --git a/clutter/clutter/clutter-paint-nodes.c b/clutter/clutter/clutter-paint-nodes.c
index 37346d5c90..ac4181f412 100644
--- a/clutter/clutter/clutter-paint-nodes.c
+++ b/clutter/clutter/clutter-paint-nodes.c
@@ -1364,10 +1364,6 @@ clutter_layer_node_pre_draw (ClutterPaintNode *node,
   if (lnode->offscreen == NULL)
     return FALSE;
 
-  /* if no geometry was submitted for this node then we simply ignore it */
-  if (node->operations == NULL)
-    return FALSE;
-
   if (lnode->needs_fbo_setup)
     {
       /* copy the same modelview from the current framebuffer to the one we
@@ -1415,6 +1411,9 @@ clutter_layer_node_post_draw (ClutterPaintNode    *node,
   cogl_framebuffer_pop_matrix (lnode->offscreen);
   clutter_paint_context_pop_framebuffer (paint_context);
 
+  if (!node->operations)
+    return;
+
   fb = clutter_paint_context_get_framebuffer (paint_context);
 
   for (i = 0; i < node->operations->len; i++)


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