added bar event timer

This commit is contained in:
Anselm R. Garbe
2006-07-11 18:15:11 +02:00
parent 3399650076
commit 586f66331d
9 changed files with 87 additions and 51 deletions

33
wm.c
View File

@ -3,10 +3,15 @@
* See LICENSE file for license details.
*/
#include <errno.h>
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/time.h>
#include <X11/cursorfont.h>
#include <X11/Xatom.h>
#include <X11/Xproto.h>
@ -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();