X-Git-Url: https://jasonwoof.com/gitweb/?p=dwm.git;a=blobdiff_plain;f=wm.c;h=f247372d4398394fd2557511dc1d9c7ccdaf0d76;hp=b156cba8badf43e26e354d8519d735292ee8ee54;hb=586f66331d1105be03c42e6faeae1672b974a98a;hpb=33996500763b04119a6867dfa4040a4236c21a41 diff --git a/wm.c b/wm.c index b156cba..f247372 100644 --- a/wm.c +++ b/wm.c @@ -3,10 +3,15 @@ * See LICENSE file for license details. */ +#include + #include #include #include +#include +#include + #include #include #include @@ -160,12 +165,9 @@ startup_error_handler(Display *dpy, XErrorEvent *error) static void cleanup() { - /* - Client *c; - for(c=client; c; c=c->next) - reparent_client(c, root, c->sel->rect.x, c->sel->rect.y); + while(clients) + unmanage(clients); XSetInputFocus(dpy, PointerRoot, RevertToPointerRoot, CurrentTime); - */ } int @@ -176,6 +178,11 @@ main(int argc, char *argv[]) unsigned int mask; Window w; XEvent ev; + fd_set fds; + struct timeval t, timeout = { + .tv_usec = 0, + .tv_sec = STATUSDELAY, + }; /* command line args */ for(i = 1; (i < argc) && (argv[i][0] == '-'); i++) { @@ -264,9 +271,19 @@ main(int argc, char *argv[]) scan_wins(); while(running) { - XNextEvent(dpy, &ev); - if(handler[ev.type]) - (handler[ev.type]) (&ev); /* call handler */ + if(XPending(dpy) > 0) { + XNextEvent(dpy, &ev); + if(handler[ev.type]) + (handler[ev.type]) (&ev); /* call handler */ + continue; + } + FD_ZERO(&fds); + FD_SET(ConnectionNumber(dpy), &fds); + t = timeout; + if(select(ConnectionNumber(dpy) + 1, &fds, NULL, NULL, &t) > 0) + continue; + else if(errno != EINTR) + draw_bar(); } cleanup();