dont flush screen when hiding software cursor

we can avoid some flickering when removing the software cursor
from the shadow framebuffer by avoiding the flushscreenimage()
call.

once the cursor is redrawn, we flush the combined rect of its
old and new position in one go.
This commit is contained in:
cinap_lenrek 2014-11-08 11:48:38 +01:00
parent e4af9bc392
commit 1ffcdbab88

View file

@ -42,7 +42,6 @@ swcursorhide(void)
return;
swvisible = 0;
memimagedraw(gscreen, swrect, swback, ZP, memopaque, ZP, S);
flushmemscreen(swrect);
}
void
@ -57,16 +56,20 @@ swcursoravoid(Rectangle r)
void
swcursordraw(Point p)
{
Rectangle flushr;
if(swvisible)
return;
if(swback == nil || swimg1 == nil || swmask1 == nil || gscreen == nil)
return;
assert(!canqlock(&drawlock));
swvispt = addpt(swoffset, p);
flushr = swrect;
swrect = rectaddpt(Rect(0,0,16,16), swvispt);
combinerect(&flushr, swrect);
memimagedraw(swback, swback->r, gscreen, swvispt, memopaque, ZP, S);
memimagedraw(gscreen, swrect, swimg1, ZP, swmask1, ZP, SoverD);
flushmemscreen(swrect);
flushmemscreen(flushr);
swvisible = 1;
}