/* static */
static int (*xerrorxlib)(Display *, XErrorEvent *);
-static Bool otherwm;
+static Bool otherwm, readin;
static void
cleanup()
{
+ close(STDIN_FILENO);
while(sel) {
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);
+ XFreePixmap(dpy, dc.drawable);
+ XFreeGC(dpy, dc.gc);
+ XDestroyWindow(dpy, barwin);
XSetInputFocus(dpy, PointerRoot, RevertToPointerRoot, CurrentTime);
XSync(dpy, False);
}
}
static int
-win_property(Window w, Atom a, Atom t, long l, unsigned char **prop)
+winprop(Window w, Atom a, Atom t, long l, unsigned char **prop)
{
int status, format;
unsigned long res, extra;
long res;
Atom *protocols;
- res = win_property(w, wmatom[WMProtocols], XA_ATOM, 20L,
+ res = winprop(w, wmatom[WMProtocols], XA_ATOM, 20L,
((unsigned char **)&protocols));
if(res <= 0) {
return protos;
void
quit(Arg *arg)
{
- running = False;
+ readin = running = False;
}
/*
int i, j, xfd;
unsigned int mask;
fd_set rd;
- Bool readin = True;
Window w;
XModifierKeymap *modmap;
XSetWindowAttributes wa;
/* main event loop, also reads status text from stdin */
XSync(dpy, False);
procevent();
+ readin = True;
while(running) {
FD_ZERO(&rd);
if(readin)
FD_SET(STDIN_FILENO, &rd);
FD_SET(xfd, &rd);
i = select(xfd + 1, &rd, NULL, NULL, NULL);
- if(i == -1 && errno == EINTR)
+ if((i == -1) && (errno == EINTR))
continue;
- if(i < 0)
- eprint("select failed\n");
- else if(i > 0) {
+ if(i > 0) {
if(readin && FD_ISSET(STDIN_FILENO, &rd)) {
readin = NULL != fgets(stext, sizeof(stext), stdin);
if(readin)
drawstatus();
}
}
+ else if(i < 0)
+ eprint("select failed\n");
procevent();
}
cleanup();