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.
This commit is contained in:
parent
517833569d
commit
afef42a4ac
7
src/x.c
7
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);
|
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_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));
|
memcpy(&(state->rect), &rect, sizeof(Rect));
|
||||||
fake_notify = true;
|
fake_notify = true;
|
||||||
|
|
Loading…
Reference in New Issue