]> git.lizzy.rs Git - plan9front.git/blobdiff - sys/src/cmd/camv.c
libtags, zuke: add *.mod support (thanks kemal)
[plan9front.git] / sys / src / cmd / camv.c
index c569b97ccc6b733d1efff2a5f5635b8ef39c3381..ab22803a84eb1a056394403a680b5ec78dde86fc 100644 (file)
@@ -39,8 +39,9 @@ emalloc(ulong n)
 void
 screeninit(void)
 {
-       bg = allocimage(display, Rect(0, 0, 1, 1), screen->chan, 1, 0xCCCCCCFF);
+       freescreen(scr);
        scr = allocscreen(screen, bg, 0);
+       freeimage(disp);
        disp = allocwindow(scr, screen->r, 0, 0xCCCCCCFF);
        draw(screen, screen->r, bg, nil, ZP);
        flushimage(display, 1);
@@ -203,8 +204,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");
@@ -225,6 +226,7 @@ threadmain(int argc, char **argv)
        
        if(initdraw(nil, nil, "camv") < 0)
                sysfatal("initdraw: %r");
+       bg = allocimage(display, Rect(0, 0, 1, 1), screen->chan, 1, 0xCCCCCCFF);
        screeninit();
        kc = initkeyboard(nil);
        if(kc == nil) sysfatal("initkeyboard: %r");
@@ -233,11 +235,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);
        }
 }