diff -r 5e30ef2e26cb -r ac96196b945c windowing/windowserver/nga/SERVER/openwfc/wnredraw.cpp --- a/windowing/windowserver/nga/SERVER/openwfc/wnredraw.cpp Fri Mar 12 15:50:05 2010 +0200 +++ b/windowing/windowserver/nga/SERVER/openwfc/wnredraw.cpp Mon Mar 15 12:45:41 2010 +0200 @@ -252,13 +252,18 @@ for (CWsSpriteBase * sprite = iWsWin->iSpriteList; sprite; sprite = sprite->Next()) { + TBool hasRedrawBegun = EFalse; STACK_REGION redrawRegion; sprite->CalcRedrawRegion(aRegion, redrawRegion); if(redrawRegion.CheckError() || !redrawRegion.IsEmpty()) { if (sprite->IsFlashingEnabled() || sprite->IsDirty() || sprite->HasAnimation()) { - AnnotateSpriteRedrawStart(*iWsWin, *sprite, redrawRegion); + if (sprite->IsDirty() || sprite->HasAnimation()) + { + AnnotateSpriteRedrawStart(*iWsWin, *sprite, redrawRegion); + hasRedrawBegun = ETrue; + } if(sprite->HasAnimation()) { @@ -276,10 +281,16 @@ } //...call Redraw on the sprite - aGc->Reset(); + if (hasRedrawBegun) + { + aGc->Reset(); + } sprite->Redraw(aGc, redrawRegion); - AnnotateSpriteRedrawEnd(*iWsWin, *sprite); + if (hasRedrawBegun) + { + AnnotateSpriteRedrawEnd(*iWsWin, *sprite); + } } } redrawRegion.Close();