X-Git-Url: https://jasonwoof.com/gitweb/?a=blobdiff_plain;f=main.c;h=545efe9c422b0a05d36d2e4ec5c27fc25e29fed0;hb=24d91e3b8a6e173bf65d5dd611b164dcb6a01978;hp=869928417c19348e07d94a397405ee557d1cf523;hpb=ee31e38dc75832a66cb0fc01bcf2f419ac96a20b;p=dwm.git diff --git a/main.c b/main.c index 8699284..545efe9 100644 --- a/main.c +++ b/main.c @@ -27,7 +27,16 @@ cleanup() resize(sel, True, TopLeft); unmanage(sel); } + if(dc.font.set) + XFreeFontSet(dpy, dc.font.set); + else + XFreeFont(dpy, dc.font.xfont); + XUngrabKey(dpy, AnyKey, AnyModifier, root); + XDestroyWindow(dpy, barwin); + XFreePixmap(dpy, dc.drawable); + XFreeGC(dpy, dc.gc); XSetInputFocus(dpy, PointerRoot, RevertToPointerRoot, CurrentTime); + XSync(dpy, False); } static void @@ -37,6 +46,7 @@ scan() Window *wins, d1, d2; XWindowAttributes wa; + wins = NULL; if(XQueryTree(dpy, root, &d1, &d2, &wins, &num)) { for(i = 0; i < num; i++) { if(!XGetWindowAttributes(dpy, wins[i], &wa)) @@ -168,7 +178,6 @@ main(int argc, char *argv[]) fd_set rd; Bool readin = True; Window w; - XEvent ev; XModifierKeymap *modmap; XSetWindowAttributes wa; @@ -196,6 +205,7 @@ main(int argc, char *argv[]) if(otherwm) eprint("dwm: another window manager is already running\n"); + XSync(dpy, False); XSetErrorHandler(NULL); xerrorxlib = XSetErrorHandler(xerror); XSync(dpy, False); @@ -268,7 +278,7 @@ main(int argc, char *argv[]) /* main event loop, also reads status text from stdin */ XSync(dpy, False); - goto XLoop; + procevent(); while(running) { FD_ZERO(&rd); if(readin) @@ -288,15 +298,8 @@ main(int argc, char *argv[]) strcpy(stext, "broken pipe"); drawstatus(); } - if(FD_ISSET(xfd, &rd)) { -XLoop: - while(XPending(dpy)) { - XNextEvent(dpy, &ev); - if(handler[ev.type]) - (handler[ev.type])(&ev); /* call handler */ - } - } } + procevent(); } cleanup(); XCloseDisplay(dpy);