static void mouseevent(Vnc *v, Mouse m) { vnclock(v); vncwrchar(v, MMouse); vncwrchar(v, m.buttons); vncwrpoint(v, m.xy); vncflush(v); vncunlock(v); }
static int vncstart(Vnc *v, int shared) { vncwrchar(v, shared); vncflush(v); v->dim = vncrdpoint(v); v->Pixfmt = vncrdpixfmt(v); v->name = vncrdstring(v); return 0; }
void vncwrpixfmt(Vnc *v, Pixfmt *fmt) { vncwrchar(v, fmt->bpp); vncwrchar(v, fmt->depth); vncwrchar(v, fmt->bigendian); vncwrchar(v, fmt->truecolor); vncwrshort(v, fmt->red.max); vncwrshort(v, fmt->green.max); vncwrshort(v, fmt->blue.max); vncwrchar(v, fmt->red.shift); vncwrchar(v, fmt->green.shift); vncwrchar(v, fmt->blue.shift); vncwrbytes(v, zero, 3); }
void checksnarf(Vnc *v) { Dir *dir; char *snarf; int len; if(snarffd < 0) { snarffd = open("/dev/snarf", OREAD); if(snarffd < 0) sysfatal("can't open /dev/snarf: %r"); } for(;;) { sleep(1000); dir = dirstat("/dev/snarf"); if(dir == nil) /* this happens under old drawterm */ continue; if(dir->qid.vers > snarfvers) { snarf = getsnarf(&len); vnclock(v); vncwrchar(v, MCCut); vncwrbytes(v, "pad", 3); vncwrlong(v, len); vncwrbytes(v, snarf, len); vncflush(v); vncunlock(v); free(snarf); snarfvers = dir->qid.vers; } free(dir); } }