]> git.lizzy.rs Git - plan9front.git/commitdiff
camv: fix display locking issues
authorcinap_lenrek <cinap_lenrek@felloff.net>
Sat, 17 Mar 2018 20:27:07 +0000 (21:27 +0100)
committercinap_lenrek <cinap_lenrek@felloff.net>
Sat, 17 Mar 2018 20:27:07 +0000 (21:27 +0100)
sys/src/cmd/camv.c

index c569b97ccc6b733d1efff2a5f5635b8ef39c3381..f3977fe7c4be99cf0c378c1fe6bf4a691517976f 100644 (file)
@@ -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);
        }
 }