From: Michael Stapelberg Date: Sun, 10 Jul 2011 18:08:40 +0000 (+0200) Subject: x: set the contents of a decoration window immediately after changing its size X-Git-Tag: tree-pr4~50 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=afef42a4acbc6c4808fef6c0ae128f01be0e1271;p=i3%2Fi3 x: set the contents of a decoration window immediately after changing its size Reduces flickering. A window loses its contents when being resized, so we have to restore them as fast as possible. --- diff --git a/src/x.c b/src/x.c index 061984f6..492442a7 100644 --- a/src/x.c +++ b/src/x.c @@ -585,7 +585,14 @@ void x_push_node(Con *con) { } DLOG("setting rect (%d, %d, %d, %d)\n", rect.x, rect.y, rect.width, rect.height); + /* flush to ensure that the following commands are sent in a single + * buffer and will be processed directly afterwards (the contents of a + * window get lost when resizing it, therefore we want to provide it as + * fast as possible) */ + xcb_flush(conn); xcb_set_window_rect(conn, con->frame, rect); + xcb_copy_area(conn, con->pixmap, con->frame, con->pm_gc, 0, 0, 0, 0, con->rect.width, con->rect.height); + xcb_flush(conn); memcpy(&(state->rect), &rect, sizeof(Rect)); fake_notify = true;