commit b20f06ab9cc0058a7e5b5e434d412db19ea7e2b8 from: rsc date: Sun Dec 26 23:24:32 2004 UTC use new thread library commit - d9f3e89e5efc95811a7d56aa8ae107aad3e3e286 commit + b20f06ab9cc0058a7e5b5e434d412db19ea7e2b8 blob - 0cf590d8cdb9622f0ca0dcd5b2785846c232a98c blob + f0ee94fb7c12c4549398930aca77f13501b2aa01 --- src/libdraw/init.c +++ src/libdraw/init.c @@ -10,7 +10,7 @@ int _drawdebug; static char deffontname[] = "*default*"; Screen *_screen; -int debuglockdisplay = 0; +int debuglockdisplay = 1; static void drawshutdown(void) @@ -34,6 +34,7 @@ initdraw(void (*error)(Display*, char*), char *fontnam if(display == nil) return -1; + lockdisplay(display); display->image = display->screenimage; screen = display->screenimage; @@ -113,7 +114,6 @@ closedisplay(Display *disp) free(disp->windir); freeimage(disp->white); freeimage(disp->black); - qunlock(&disp->qlock); free(disp); } blob - 5ab911ab8c71ee8efc3c48681d53fc474f04cd3d blob + 0a8ec010eac632e383c93e8fd20ed0b99681a5ab --- src/libdraw/keyboard.c +++ src/libdraw/keyboard.c @@ -91,6 +91,7 @@ Error2: } free(t); kc->c = chancreate(sizeof(Rune), 20); + chansetname(kc->c, "kbdc"); proccreate(_ioproc, kc, 4096); return kc; } blob - e7b8f8909b0e7f219f43776a83c5ab44bd46dc06 blob + 3b3cbb6befd9a5f84d935e2f30a6760d709388bc --- src/libdraw/mouse.c +++ src/libdraw/mouse.c @@ -118,7 +118,9 @@ initmouse(char *file, Image *i) free(t); mc->image = i; mc->c = chancreate(sizeof(Mouse), 0); + chansetname(mc->c, "mousec"); mc->resizec = chancreate(sizeof(int), 2); + chansetname(mc->resizec, "resizec"); proccreate(_ioproc, mc, 4096); return mc; } blob - 0a28813d1a8cbdc249af121be0d75b3ed92d2c91 blob + b80bd2e9997ebad6ad3e138020c5e13d8d216f8e --- src/libdraw/x11-draw.c +++ src/libdraw/x11-draw.c @@ -23,11 +23,11 @@ memimagedraw(Memimage *dst, Rectangle r, Memimage *src /* only fetch dst data if we need it */ if((par->state&(Simplemask|Fullmask)) != (Simplemask|Fullmask)) - _xgetxdata(dst, par->r); + _xgetxdata(par->dst, par->r); /* always fetch source and mask */ - _xgetxdata(src, par->sr); - _xgetxdata(mask, par->mr); + _xgetxdata(par->src, par->sr); + _xgetxdata(par->mask, par->mr); /* now can run memimagedraw on the in-memory bits */ _memimagedraw(par); @@ -36,7 +36,7 @@ memimagedraw(Memimage *dst, Rectangle r, Memimage *src return; /* put bits back on x server */ - _xputxdata(dst, par->r); + _xputxdata(par->dst, par->r); } static int blob - bee0f410c9cbdc647203450b16f0b0d2eb541fd2 blob + 1a4d0a3bdc5934302d3cdd3a917238816352c2cb --- src/libdraw/x11-keyboard.c +++ src/libdraw/x11-keyboard.c @@ -45,9 +45,7 @@ _ioproc(void *arg) fd = XConnectionNumber(_x.kbdcon); XSelectInput(_x.kbdcon, _x.drawable, KeyPressMask); for(;;){ - while(XCheckWindowEvent(_x.kbdcon, _x.drawable, KeyPressMask, &xevent) == False){ - threadfdwait(fd, 'r'); - } + XWindowEvent(_x.kbdcon, _x.drawable, KeyPressMask, &xevent); switch(xevent.type){ case KeyPress: i = _xtoplan9kbd(&xevent); @@ -69,12 +67,12 @@ initkeyboard(char *file) { Keyboardctl *kc; - threadfdwaitsetup(); kc = mallocz(sizeof(Keyboardctl), 1); if(kc == nil) return nil; kc->c = chancreate(sizeof(Rune), 20); - threadcreate(_ioproc, kc, 32768); + chansetname(kc->c, "kbdc"); + proccreate(_ioproc, kc, 32768); return kc; } blob - 4827423c02eacdd731e193e4fda3b3dc41b9cbc1 blob + 936b562863aaac99de3876cabae3d0d48e20ee17 --- src/libdraw/x11-mouse.c +++ src/libdraw/x11-mouse.c @@ -50,7 +50,7 @@ static void _ioproc(void *arg) { - int fd, one; + int fd, one, buttons; Atom a; ulong mask; Mouse m; @@ -65,9 +65,8 @@ _ioproc(void *arg) mask = MouseMask|ExposureMask|StructureNotifyMask; XSelectInput(_x.mousecon, _x.drawable, mask); fd = XConnectionNumber(_x.mousecon); + buttons = 0; for(;;){ - while(XPending(_x.mousecon) == False) - threadfdwait(fd, 'r'); XNextEvent(_x.mousecon, &xevent); switch(xevent.type){ case Expose: @@ -94,14 +93,16 @@ _ioproc(void *arg) case ButtonRelease: case MotionNotify: /* If the motion notifications are backing up, skip over some. */ - if(xevent.type == MotionNotify){ + if(0 && xevent.type == MotionNotify){ while(XCheckWindowEvent(_x.mousecon, _x.drawable, MouseMask, &xevent)){ if(xevent.type != MotionNotify) break; } } + m.buttons = buttons; if(_xtoplan9mouse(_x.mousecon, &xevent, &m) < 0) continue; + buttons = m.buttons; send(mc->c, &m); /* * mc->Mouse is updated after send so it doesn't have wrong value if we block during send. @@ -133,13 +134,14 @@ 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); + chansetname(mc->c, "mousec"); mc->resizec = chancreate(sizeof(int), 2); - threadcreate(_ioproc, mc, 32768); + chansetname(mc->resizec, "resizec"); + proccreate(_ioproc, mc, 32768); return mc; }