unmap windows after stacking. much better performance!

This commit is contained in:
Marco Peereboom 2010-04-20 19:08:06 +00:00
parent 8ac8dc5fbb
commit 8586681805

View file

@ -1434,7 +1434,7 @@ focus_win(struct ws_win *win)
void void
switchws(struct swm_region *r, union arg *args) switchws(struct swm_region *r, union arg *args)
{ {
int wsid = args->id; int wsid = args->id, unmap_old = 0;
struct swm_region *this_r, *other_r; struct swm_region *this_r, *other_r;
struct ws_win *win; struct ws_win *win;
struct workspace *new_ws, *old_ws; struct workspace *new_ws, *old_ws;
@ -1462,9 +1462,7 @@ switchws(struct swm_region *r, union arg *args)
if (old_ws->r != NULL) if (old_ws->r != NULL)
old_ws->old_r = old_ws->r; old_ws->old_r = old_ws->r;
old_ws->r = NULL; old_ws->r = NULL;
unmap_old = 1;
TAILQ_FOREACH(win, &old_ws->winlist, entry)
unmap_window(win);
} else { } else {
other_r->ws = old_ws; other_r->ws = old_ws;
old_ws->r = other_r; old_ws->r = other_r;
@ -1476,6 +1474,11 @@ switchws(struct swm_region *r, union arg *args)
a.id = SWM_ARG_ID_FOCUSCUR; a.id = SWM_ARG_ID_FOCUSCUR;
focus(new_ws->r, &a); focus(new_ws->r, &a);
bar_update(); bar_update();
/* unmap old windows */
if (unmap_old)
TAILQ_FOREACH(win, &old_ws->winlist, entry)
unmap_window(win);
} }
void void
@ -4740,7 +4743,7 @@ main(int argc, char *argv[])
} }
done: done:
bar_extra_stop(); bar_extra_stop();
XFreeGC(display, bar_gc);
XCloseDisplay(display); XCloseDisplay(display);
return (0); return (0);