| 
#include <u.h>
#include <libc.h>
#include <bio.h>
#include <thread.h>
#include <draw.h>
#include <mouse.h>
#include "lex.h"
#include "sky.h"
#include "gfx.h"
#include "dat.h"
#include "fns.h"
enum
{
	STACK = 512*1024+10000*sizeof(Cmd) + 10000*sizeof(struct Cmdnode),
};
Mousectl *mc;
void
resized(void)
{
	opresize(nil, 0);
	opdraw(nil, 0);
}
void
cleanup(void)
{
	closemouse(mc);
}
void
threadmain(int argc, char *argv[])
{
	int rm;
	Mouse mm;
	Alt a[] = {
		{nil, &rm, CHANRCV},
		{nil, &mm, CHANRCV},
		{nil, nil, CHANEND},
	};
	opinit();
	if(newwindow(nil) < 0 || initdraw(nil, nil, "skywatch") < 0 || gfxinit() < 0)
		sysfatal("failed to initialise draw: %r");
	if((mc = initmouse(nil, screen)) == nil)
		sysfatal("initmouse: %r");
	rm = 0;
	a[0].c = mc->resizec;
	a[1].c = mc->c;
	resized();
	proccreate(&cmdproc, cmdreg, STACK);
	for(;;) switch(alt(a)){
	case 0:
		print("mouse: resized\n");
		resized();
		break;
	case 1:
		print("mouse: mouse\n");
		break;
	default:
		sysfatal("shouldn't happen");
	}		
}
 |