/^drawgen/ s/char\*, Dirtab\*, int,/char *_, Dirtab *__, int ___,/ ,s/(Memimage\*,/(Memimage *m,/ ,s/(next = ds->next)/(&)/ ,s/(next = d->next)/(&)/ ,s/(next = cs->next)/(&)/ /^makescreenimage/+2i void *X; . /attachscreen/ s/);/, \&X);/ /allocmemimaged/ s/md)/md, X)/ ,s/(r = cl->refresh)/(&)/ /^drawwrite/ s/vlong)/vlong _)/ g/SET(s,q,p)/d g/USED/d g/^ int s;/d /screen.h"/a #define blankscreen(x) #define ishwimage(x) (0) . /^drawlookupscreen/;# / return 0/ s/return 0/for(;;)/ g/Edepth/d /l = dimage->image;/d -1i l = dimage->image; dimage->dscreen = nil; /* paranoia */ dimage->image = nil; . /^drawattach/;# /initscreenimage/s/(.*)/(!conf.monitor || !initscreenimage())/ /freememimage(dimage->image);/ s/dimage->image/l/ ,s/dunlock/drawqunlock/g ,s/candlock/drawcanqlock/g ,s/dlock(/drawqlock(/g ,s;MACHP(0)->ticks;msec()/1000;g /^drawqlock/-1 s/static // /^drawqunlock/-1 s/static // /^drawcanqlock/-1 s/static // $a /* why is this here? why can't caller use drawqlock himself? */ void drawflushr(Rectangle r) { drawqlock(); flushmemscreen(r); drawqunlock(); } void drawreplacescreenimage(Memimage *m) { int i; DImage *di; if(screendimage == nil) return; /* * Replace the screen image because the screen * was resized. Clients still have references to the * old screen image, so we can't free it just yet. */ drawqlock(); di = allocdimage(m); if(di == nil){ print("no memory to replace screen image\n"); freememimage(m); drawqunlock(); return; } /* Replace old screen image in global name lookup. */ for(i=0; i