]> git.sur5r.net Git - i3/i3/commitdiff
x: skip creating pixmaps when the rect is actually invisible
authorMichael Stapelberg <michael@stapelberg.de>
Fri, 1 Apr 2011 19:54:45 +0000 (21:54 +0200)
committerMichael Stapelberg <michael@stapelberg.de>
Fri, 1 Apr 2011 19:54:45 +0000 (21:54 +0200)
This fixes a few X11 errors.

src/x.c

diff --git a/src/x.c b/src/x.c
index 995b4373249268bd5ebdbab6f4a818d408e392d0..ee9e0a43868eb84e5eb30e0beb8657a05c7e52b5 100644 (file)
--- a/src/x.c
+++ b/src/x.c
@@ -510,9 +510,12 @@ static void x_push_node(Con *con) {
         xcb_set_window_rect(conn, con->frame, rect);
 
         /* As the pixmap only depends on the size and not on the position, it
-         * is enough to check if width/height have changed */
-        if (state->rect.width != rect.width ||
-            state->rect.height != rect.height) {
+         * is enough to check if width/height have changed. Also, we don’t
+         * create a pixmap at all when the window is actually not visible
+         * (height == 0). */
+        if (rect.height > 0 &&
+            (state->rect.width != rect.width ||
+            state->rect.height != rect.height)) {
             DLOG("CACHE: creating new pixmap\n");
             if (con->pixmap == 0) {
                 con->pixmap = xcb_generate_id(conn);