]> git.sur5r.net Git - i3/i3/commitdiff
Bugfix: Set pixmap_recreated before rendering the decoration
authorMichael Stapelberg <michael@stapelberg.de>
Sun, 29 May 2011 10:20:09 +0000 (12:20 +0200)
committerMichael Stapelberg <michael@stapelberg.de>
Sun, 29 May 2011 10:20:09 +0000 (12:20 +0200)
src/x.c

diff --git a/src/x.c b/src/x.c
index b166d6828b64ce3cbcae7f4fc236a183b73f9ed1..8aa05f91ec36a79a9e7d4adc9ffa66512d9490eb 100644 (file)
--- a/src/x.c
+++ b/src/x.c
@@ -507,7 +507,7 @@ void x_push_node(Con *con) {
         }
         rect.height = max_y + max_height;
         if (rect.height == 0) {
-            DLOG("Unmapping container because it does not contain anything atm.\n");
+            DLOG("Unmapping container %p because it does not contain anything.\n", con);
             con->mapped = false;
         }
     }
@@ -553,7 +553,9 @@ void x_push_node(Con *con) {
         if (rect.height > 0 &&
             (state->rect.width != rect.width ||
             state->rect.height != rect.height)) {
-            DLOG("CACHE: creating new pixmap\n");
+            DLOG("CACHE: creating new pixmap for con %p (old: %d x %d, new: %d x %d)\n",
+                    con, state->rect.width, state->rect.height,
+                    rect.width, rect.height);
             if (con->pixmap == 0) {
                 con->pixmap = xcb_generate_id(conn);
                 con->pm_gc = xcb_generate_id(conn);
@@ -564,6 +566,8 @@ void x_push_node(Con *con) {
             xcb_create_pixmap(conn, root_depth, con->pixmap, con->frame, rect.width, rect.height);
             xcb_create_gc(conn, con->pm_gc, con->pixmap, 0, 0);
 
+            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. */
@@ -571,7 +575,6 @@ void x_push_node(Con *con) {
 
             uint32_t values[] = { con->pixmap };
             xcb_change_window_attributes(conn, con->frame, XCB_CW_BACK_PIXMAP, values);
-            con->pixmap_recreated = true;
         }
 
         DLOG("setting rect (%d, %d, %d, %d)\n", rect.x, rect.y, rect.width, rect.height);