From: ianmdlvl Date: Sun, 12 Dec 2004 01:19:01 +0000 (+0000) Subject: works - needs name etc. X-Git-Tag: debian_version_4_0_99_0_12~10 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?p=chiark-utils.git;a=commitdiff_plain;h=4418c73485144d32c1cd72e2e553e498b30f53a5 works - needs name etc. --- diff --git a/cprogs/xacpi-simple.c b/cprogs/xacpi-simple.c index 37a2e31..50b7965 100644 --- a/cprogs/xacpi-simple.c +++ b/cprogs/xacpi-simple.c @@ -30,6 +30,9 @@ #include +#define TOP 60 +#define BOTTOM 3600 + #define TIMEOUT 5000 /* milliseconds */ /*---------- general utility stuff and declarations ----------*/ @@ -292,9 +295,6 @@ static void initacquire(void) { /*---------- display ----------*/ -#define TOP 60 -#define BOTTOM 3600 - #define COLOURS \ C(dimgrey) \ C(blue) \ @@ -447,7 +447,7 @@ static void initgraphics(void) { if (!r) fail("init set background"); lastbackground= pix_dimgrey; - XSelectInput(disp,win, ExposureMask|VisibilityChangeMask); + XSelectInput(disp,win, ExposureMask|StructureNotifyMask); XMapWindow(disp,win); } @@ -465,47 +465,30 @@ static void newgeometry(void) { static void eventloop(void) { XEvent ev; - int *fds, nfds, npfds, *fdp, i, r; - struct pollfd *pfds, *pfd; + struct pollfd pfd; + int r; newgeometry(); + refresh(); - npfds= 0; - pfds= 0; for (;;) { - r= XInternalConnectionNumbers(disp, &fds, &nfds); - if (!r) fail("XInternalConnectionNumbers"); + pfd.fd= ConnectionNumber(disp); + pfd.events= POLLIN|POLLERR; - if (npfds != nfds) { - pfds= realloc(pfds, sizeof(*pfds) * nfds); - if (!pfds) failr("realloc for pollfds",errno); - npfds= nfds; - } - for (i=0, pfd=pfds, fdp=fds; - ifd= *fdp; - pfd->events= POLLIN|POLLERR; - } - XFree(fds); - - r= poll(pfds,npfds,TIMEOUT); - if (r==-1) failr("poll",errno); - - for (i=0, pfd=pfds; - irevents) - XProcessInternalConnection(disp,pfd->fd); - } + r= poll(&pfd,1,TIMEOUT); + if (r==-1 && errno!=EINTR) failr("poll",errno); while (XPending(disp)) { XNextEvent(disp,&ev); - if (ev.type == ConfigureNotify) - newgeometry(); + if (ev.type == ConfigureNotify) { + XConfigureEvent *ce= (void*)&ev; + width= ce->width; + height= ce->height; + } } refresh(); + XFlush(disp); } }