summaryrefslogtreecommitdiff
path: root/sys/src/cmd/camv.c
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2018-03-17 21:27:07 +0100
committercinap_lenrek <cinap_lenrek@felloff.net>2018-03-17 21:27:07 +0100
commit4d59f9bd1a0051feaf9e52a2c10d6b05807c59f4 (patch)
tree8cad0a0e6a6c3cb01d708673c2801ec2043689d0 /sys/src/cmd/camv.c
parentc2c9562e3c2994d87f65ab09779190d1e7e09517 (diff)
camv: fix display locking issues
Diffstat (limited to 'sys/src/cmd/camv.c')
-rw-r--r--sys/src/cmd/camv.c10
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);
}
}