diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2013-11-23 01:05:33 +0100 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2013-11-23 01:05:33 +0100 |
commit | 2f9ae0f8ac8610e13ced184847b57b87fe5db580 (patch) | |
tree | f9ad2223d518585a2cfe9ea1c73e1e37d07bf637 /sys/src/cmd/unix/drawterm/kern/devmouse.c | |
parent | ea5797c0731203c09ec5fb7172e77eab2750f1a9 (diff) |
removing (outdated) drawterm
drawterm is much better maintained by russ cox,
so removing this outdated copy.
for a more recent version, go to:
http://swtch.com/drawterm/
Diffstat (limited to 'sys/src/cmd/unix/drawterm/kern/devmouse.c')
-rw-r--r-- | sys/src/cmd/unix/drawterm/kern/devmouse.c | 237 |
1 files changed, 0 insertions, 237 deletions
diff --git a/sys/src/cmd/unix/drawterm/kern/devmouse.c b/sys/src/cmd/unix/drawterm/kern/devmouse.c deleted file mode 100644 index 3ee0c8b6b..000000000 --- a/sys/src/cmd/unix/drawterm/kern/devmouse.c +++ /dev/null @@ -1,237 +0,0 @@ -#include "u.h" -#include "lib.h" -#include "dat.h" -#include "fns.h" -#include "error.h" - -#include "draw.h" -#include "memdraw.h" -#include "screen.h" - -int mousequeue = 1; - -Mouseinfo mouse; -Cursorinfo cursor; - -static int mousechanged(void*); - -enum{ - Qdir, - Qcursor, - Qmouse -}; - -Dirtab mousedir[]={ - ".", {Qdir, 0, QTDIR}, 0, DMDIR|0555, - "cursor", {Qcursor}, 0, 0666, - "mouse", {Qmouse}, 0, 0666, -}; - -#define NMOUSE (sizeof(mousedir)/sizeof(Dirtab)) - -static Chan* -mouseattach(char *spec) -{ - return devattach('m', spec); -} - -static Walkqid* -mousewalk(Chan *c, Chan *nc, char **name, int nname) -{ - return devwalk(c, nc, name, nname, mousedir, NMOUSE, devgen); -} - -static int -mousestat(Chan *c, uchar *db, int n) -{ - return devstat(c, db, n, mousedir, NMOUSE, devgen); -} - -static Chan* -mouseopen(Chan *c, int omode) -{ - switch((long)c->qid.path){ - case Qdir: - if(omode != OREAD) - error(Eperm); - break; - case Qmouse: - lock(&mouse.lk); - if(mouse.open){ - unlock(&mouse.lk); - error(Einuse); - } - mouse.open = 1; - unlock(&mouse.lk); - break; - } - c->mode = openmode(omode); - c->flag |= COPEN; - c->offset = 0; - return c; -} - -void -mouseclose(Chan *c) -{ - if(!(c->flag&COPEN)) - return; - - switch((long)c->qid.path) { - case Qmouse: - lock(&mouse.lk); - mouse.open = 0; - unlock(&mouse.lk); - cursorarrow(); - } -} - - -long -mouseread(Chan *c, void *va, long n, vlong offset) -{ - char buf[4*12+1]; - uchar *p; - int i, nn; - ulong msec; -/* static int map[8] = {0, 4, 2, 6, 1, 5, 3, 7 }; */ - - p = va; - switch((long)c->qid.path){ - case Qdir: - return devdirread(c, va, n, mousedir, NMOUSE, devgen); - - case Qcursor: - if(offset != 0) - return 0; - if(n < 2*4+2*2*16) - error(Eshort); - n = 2*4+2*2*16; - lock(&cursor.lk); - BPLONG(p+0, cursor.offset.x); - BPLONG(p+4, cursor.offset.y); - memmove(p+8, cursor.clr, 2*16); - memmove(p+40, cursor.set, 2*16); - unlock(&cursor.lk); - return n; - - case Qmouse: - while(mousechanged(0) == 0) - sleep(&mouse.r, mousechanged, 0); - - lock(&screen.lk); - if(screen.reshaped) { - screen.reshaped = 0; - sprint(buf, "t%11d %11d", 0, ticks()); - if(n > 1+2*12) - n = 1+2*12; - memmove(va, buf, n); - unlock(&screen.lk); - return n; - } - unlock(&screen.lk); - - lock(&mouse.lk); - i = mouse.ri; - nn = (mouse.wi + Mousequeue - i) % Mousequeue; - if(nn < 1) - panic("empty mouse queue"); - msec = ticks(); - while(nn > 1) { - if(mouse.queue[i].msec + Mousewindow > msec) - break; - i = (i+1)%Mousequeue; - nn--; - } - sprint(buf, "m%11d %11d %11d %11d", - mouse.queue[i].xy.x, - mouse.queue[i].xy.y, - mouse.queue[i].buttons, - mouse.queue[i].msec); - mouse.ri = (i+1)%Mousequeue; - unlock(&mouse.lk); - if(n > 1+4*12) - n = 1+4*12; - memmove(va, buf, n); - return n; - } - return 0; -} - -long -mousewrite(Chan *c, void *va, long n, vlong offset) -{ - char *p; - Point pt; - char buf[64]; - - USED(offset); - - p = va; - switch((long)c->qid.path){ - case Qdir: - error(Eisdir); - - case Qcursor: - if(n < 2*4+2*2*16){ - cursorarrow(); - }else{ - n = 2*4+2*2*16; - lock(&cursor.lk); - cursor.offset.x = BGLONG(p+0); - cursor.offset.y = BGLONG(p+4); - memmove(cursor.clr, p+8, 2*16); - memmove(cursor.set, p+40, 2*16); - unlock(&cursor.lk); - setcursor(); - } - return n; - - case Qmouse: - if(n > sizeof buf-1) - n = sizeof buf -1; - memmove(buf, va, n); - buf[n] = 0; - p = 0; - pt.x = strtoul(buf+1, &p, 0); - if(p == 0) - error(Eshort); - pt.y = strtoul(p, 0, 0); - if(ptinrect(pt, gscreen->r)) - mouseset(pt); - return n; - } - - error(Egreg); - return -1; -} - -int -mousechanged(void *a) -{ - USED(a); - - return mouse.ri != mouse.wi || screen.reshaped; -} - -Dev mousedevtab = { - 'm', - "mouse", - - devreset, - devinit, - devshutdown, - mouseattach, - mousewalk, - mousestat, - mouseopen, - devcreate, - mouseclose, - mouseread, - devbread, - mousewrite, - devbwrite, - devremove, - devwstat, -}; - |