From 5a8e63b2f016735364d17866d5e2bcb35d20c78b Mon Sep 17 00:00:00 2001 From: rsc Date: Sun, 29 Feb 2004 22:10:26 +0000 Subject: Fighting the good fight. Move libfmt, libutf into subdirectories of lib9. Add poll-based socket i/o to libthread, so that we can avoid using multiple procs when possible, thus removing dependence on crappy pthreads implementations. Convert samterm, acme to the single-proc libthread. Bring libcomplete, acme up-to-date w.r.t. Plan 9 distribution. --- src/libdraw/x11-mouse.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'src/libdraw/x11-mouse.c') diff --git a/src/libdraw/x11-mouse.c b/src/libdraw/x11-mouse.c index 9e5143c6..6da045bb 100644 --- a/src/libdraw/x11-mouse.c +++ b/src/libdraw/x11-mouse.c @@ -47,7 +47,7 @@ static void _ioproc(void *arg) { - int one; + int fd, one; ulong mask; Mouse m; Mousectl *mc; @@ -60,7 +60,10 @@ _ioproc(void *arg) mc->pid = getpid(); mask = MouseMask|ExposureMask|StructureNotifyMask; XSelectInput(_x.mousecon, _x.drawable, mask); + fd = XConnectionNumber(_x.mousecon); for(;;){ + while(XPending(_x.mousecon) == False) + threadfdwait(fd, 'r'); XNextEvent(_x.mousecon, &xevent); switch(xevent.type){ case Expose: @@ -105,12 +108,13 @@ initmouse(char *file, Image *i) { Mousectl *mc; + threadfdwaitsetup(); mc = mallocz(sizeof(Mousectl), 1); if(i) mc->display = i->display; mc->c = chancreate(sizeof(Mouse), 0); mc->resizec = chancreate(sizeof(int), 2); - proccreate(_ioproc, mc, 16384); + threadcreate(_ioproc, mc, 16384); return mc; } -- cgit v1.2.3