]> git.sur5r.net Git - i3/i3/commitdiff
Bugfix: Recreate double-buffers on reconfiguring (thx sECuRE)
authorAxel Wagner <mail@merovius.de>
Thu, 6 Jan 2011 16:28:21 +0000 (17:28 +0100)
committerAxel Wagner <mail@merovius.de>
Thu, 6 Jan 2011 16:28:21 +0000 (17:28 +0100)
i3bar/src/xcb.c

index 6f023b4f78b290755585a46cac2f1201900f8377..0cb1201ab03ecd005c5f948eff32bcdba84a9591 100644 (file)
@@ -727,14 +727,30 @@ void reconfig_windows() {
             values[2] = walk->rect.w;
             values[3] = font_height + 6;
             values[4] = XCB_STACK_MODE_ABOVE;
+
+            DLOG("Destroying buffer for output %s", walk->name);
+            xcb_free_pixmap(xcb_connection, walk->buffer);
+
             DLOG("Reconfiguring Window for output %s to %d,%d\n", walk->name, values[0], values[1]);
             xcb_void_cookie_t cfg_cookie = xcb_configure_window_checked(xcb_connection,
                                                                         walk->bar,
                                                                         mask,
                                                                         values);
+
+            DLOG("Recreating buffer for output %s", walk->name);
+            xcb_void_cookie_t pm_cookie = xcb_create_pixmap_checked(xcb_connection,
+                                                                    xcb_screen->root_depth,
+                                                                    walk->buffer,
+                                                                    walk->bar,
+                                                                    walk->rect.w,
+                                                                    walk->rect.h);
+
             if (xcb_request_failed(cfg_cookie, "Could not reconfigure window")) {
                 exit(EXIT_FAILURE);
             }
+            if (xcb_request_failed(pm_cookie,  "Could not create pixmap")) {
+                exit(EXIT_FAILURE);
+            }
         }
     }
 }