diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2018-03-17 21:27:07 +0100 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2018-03-17 21:27:07 +0100 |
commit | 4d59f9bd1a0051feaf9e52a2c10d6b05807c59f4 (patch) | |
tree | 8cad0a0e6a6c3cb01d708673c2801ec2043689d0 /sys/src/cmd/camv.c | |
parent | c2c9562e3c2994d87f65ab09779190d1e7e09517 (diff) |
camv: fix display locking issues
Diffstat (limited to 'sys/src/cmd/camv.c')
-rw-r--r-- | sys/src/cmd/camv.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/sys/src/cmd/camv.c b/sys/src/cmd/camv.c index c569b97cc..f3977fe7c 100644 --- a/sys/src/cmd/camv.c +++ b/sys/src/cmd/camv.c @@ -203,8 +203,8 @@ restart: r = (Rectangle){subpt(p, q), addpt(p, q)}; lockdisplay(display); draw(disp, r, i, nil, i->r.min); - flushimage(display, 1); freeimage(i); + flushimage(display, 1); unlockdisplay(display); } fprint(2, "readimage: %r\n"); @@ -233,11 +233,17 @@ threadmain(int argc, char **argv) threadcreate(resizethread, nil, mainstacksize); proccreate(videoproc, nil, mainstacksize); display->locking = 1; + flushimage(display, 1); unlockdisplay(display); - while(readmouse(mc) >= 0){ + while(recv(mc->c, &mc->Mouse) >= 0){ + if(mc->buttons == 0) + continue; + lockdisplay(display); if((mc->buttons & 4) != 0) rmb(); else if((mc->buttons & 2) != 0) mmb(); + flushimage(display, 1); + unlockdisplay(display); } } |