summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorges Basile Stavracas Neto <georges.stavracas@gmail.com>2020-12-08 15:11:51 -0300
committerGeorges Basile Stavracas Neto <georges.stavracas@gmail.com>2020-12-15 10:36:34 -0300
commit6654053250890c928f6165055a44c2dbf13889c0 (patch)
tree86b8d3e7328a52d637c207da6ce8513d02226519
parent533e6768dace01c7ef7d4eaf122e30b860f46ba5 (diff)
downloadmutter-6654053250890c928f6165055a44c2dbf13889c0.tar.gz
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>
-rw-r--r--clutter/clutter/clutter-paint-nodes.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/clutter/clutter/clutter-paint-nodes.c b/clutter/clutter/clutter-paint-nodes.c
index 37346d5c9..ac4181f41 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++)