ref: 2b99422480d596ebc26921c87c6bb81a07949f3e
dir: /progs/resize.c.ms/
.P1 .ps -1 .ti -1i .B .BX resize.c .ps +1 .CW .ps -2 .vs .15i #include <u.h> #include <libc.h> #include <thread.h> #include <draw.h> #include <mouse.h> void blank(void) { draw(screen, screen->r, display->black, nil, ZP); flushimage(display, 1); } void resizethread(void* arg) { Mousectl*mctl = arg; for(;;){ recvul(mctl->resizec); if (getwindow(display, Refnone) < 0) sysfatal("getwindow: %r"); blank(); } } void mousethread(void* arg) { Mousectl*mctl = arg; Mouse m; for(;;){ recv(mctl->c, &m); if(m.buttons){ do { recv(mctl->c, &m); } while(m.buttons); closedisplay(display); closemouse(mctl); threadexitsall(nil); } } } .ps +2 .P2 .P1 .ps -2 void threadmain(int, char*argv[]) { Mousectl*mctl; Mouse m; mctl = initmouse("/dev/mouse", nil); if (mctl == nil) sysfatal("initmouse: %r"); if(initdraw(nil, nil, argv[0]) < 0) sysfatal("initdraw: %r"); threadcreate(resizethread, mctl, 8*1024); threadcreate(mousethread, mctl, 8*1024); blank(); threadexits(nil); } .ps +2 .P2