x: when rendering stacked/tabbed cons, only update decoration once, saves some CopyAreas
This commit is contained in:
parent
8be26c9a22
commit
0d8dd571f8
9
src/x.c
9
src/x.c
|
@ -452,7 +452,6 @@ void x_draw_decoration(Con *con) {
|
|||
|
||||
copy_pixmaps:
|
||||
xcb_copy_area(conn, con->pixmap, con->frame, con->pm_gc, 0, 0, 0, 0, con->rect.width, con->rect.height);
|
||||
xcb_copy_area(conn, parent->pixmap, parent->frame, parent->pm_gc, 0, 0, 0, 0, parent->rect.width, parent->rect.height);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -463,13 +462,21 @@ copy_pixmaps:
|
|||
*/
|
||||
static void x_deco_recurse(Con *con) {
|
||||
Con *current;
|
||||
bool leaf = TAILQ_EMPTY(&(con->nodes_head)) &&
|
||||
TAILQ_EMPTY(&(con->floating_head));
|
||||
con_state *state = state_for_frame(con->frame);
|
||||
|
||||
if (!leaf) {
|
||||
TAILQ_FOREACH(current, &(con->nodes_head), nodes)
|
||||
x_deco_recurse(current);
|
||||
|
||||
TAILQ_FOREACH(current, &(con->floating_head), floating_windows)
|
||||
x_deco_recurse(current);
|
||||
|
||||
if (state->mapped)
|
||||
xcb_copy_area(conn, con->pixmap, con->frame, con->pm_gc, 0, 0, 0, 0, con->rect.width, con->rect.height);
|
||||
}
|
||||
|
||||
if ((con->type != CT_ROOT && con->type != CT_OUTPUT) &&
|
||||
con->mapped)
|
||||
x_draw_decoration(con);
|
||||
|
|
Loading…
Reference in New Issue