]> git.sur5r.net Git - i3/i3/commitdiff
x: Don’t pre-render the decoration for windows inside a stack which are not visible
authorMichael Stapelberg <michael@stapelberg.de>
Sun, 10 Jul 2011 19:54:34 +0000 (21:54 +0200)
committerMichael Stapelberg <michael@stapelberg.de>
Sun, 10 Jul 2011 19:55:29 +0000 (21:55 +0200)
Saves n-1 decoration renderings for n windows in a stack whenever a new window
gets added or removed.

src/x.c

diff --git a/src/x.c b/src/x.c
index b40a5c38b282cb3a2d3acb0cb2c0d6ef6899652a..85e9f41ab0ff48d2a935d9faa7b5b508c66acf44 100644 (file)
--- a/src/x.c
+++ b/src/x.c
@@ -578,10 +578,15 @@ void x_push_node(Con *con) {
 
             con->pixmap_recreated = true;
 
-            /* Render the decoration now to make the correct decoration visible
-             * from the very first moment. Later calls will be cached, so this
-             * doesn’t hurt performance. */
-            x_deco_recurse(con);
+            /* Don’t render the decoration for windows inside a stack which are
+             * not visible right now */
+            if (!con->parent ||
+                con->parent->layout != L_STACKED ||
+                TAILQ_FIRST(&(con->parent->focus_head)) == con)
+                /* Render the decoration now to make the correct decoration visible
+                 * from the very first moment. Later calls will be cached, so this
+                 * doesn’t hurt performance. */
+                x_deco_recurse(con);
         }
 
         DLOG("setting rect (%d, %d, %d, %d)\n", rect.x, rect.y, rect.width, rect.height);