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
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))
fd_set rd;
Bool readin = True;
Window w;
- XEvent ev;
XModifierKeymap *modmap;
XSetWindowAttributes wa;
if(otherwm)
eprint("dwm: another window manager is already running\n");
+ XSync(dpy, False);
XSetErrorHandler(NULL);
xerrorxlib = XSetErrorHandler(xerror);
XSync(dpy, False);
/* main event loop, also reads status text from stdin */
XSync(dpy, False);
- goto XLoop;
+ procevent();
while(running) {
FD_ZERO(&rd);
if(readin)
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);