diff options
author | okan <okan> | 2014-01-22 22:14:02 +0000 |
---|---|---|
committer | okan <okan> | 2014-01-22 22:14:02 +0000 |
commit | 5121ea5e10bce88d1716f5fc719b4385a26289ff (patch) | |
tree | 4d89147b394fe63ec4ba9ac8b938f172b1acb694 /calmwm.c | |
parent | 77aa5ac45b06b4afa392e21d55e3318913b0347b (diff) | |
download | cwm-5121ea5e10bce88d1716f5fc719b4385a26289ff.tar.gz cwm-5121ea5e10bce88d1716f5fc719b4385a26289ff.tar.xz cwm-5121ea5e10bce88d1716f5fc719b4385a26289ff.zip |
start properly releasing X resources during teardown
Diffstat (limited to 'calmwm.c')
-rw-r--r-- | calmwm.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/calmwm.c b/calmwm.c index 9e76d34..5e3825c 100644 --- a/calmwm.c +++ b/calmwm.c @@ -156,6 +156,25 @@ x_restart(void) static void x_teardown(void) { + struct screen_ctx *sc; + unsigned int i; + + TAILQ_FOREACH(sc, &Screenq, entry) { + for (i = 0; i < CWM_COLOR_NITEMS; i++) + XftColorFree(X_Dpy, sc->visual, sc->colormap, + &sc->xftcolor[i]); + XftDrawDestroy(sc->xftdraw); + XftFontClose(X_Dpy, sc->xftfont); + XUnmapWindow(X_Dpy, sc->menuwin); + XDestroyWindow(X_Dpy, sc->menuwin); + XUngrabKey(X_Dpy, AnyKey, AnyModifier, sc->rootwin); + } + XUngrabPointer(X_Dpy, CurrentTime); + XUngrabKeyboard(X_Dpy, CurrentTime); + for (i = 0; i < CF_NITEMS; i++) + XFreeCursor(X_Dpy, Conf.cursor[i]); + XSync(X_Dpy, False); + XSetInputFocus(X_Dpy, PointerRoot, RevertToPointerRoot, CurrentTime); XCloseDisplay(X_Dpy); } |