windowing/windowserver/nga/SERVER/openwfc/wnredraw.cpp
branchRCL_3
changeset 19 ac96196b945c
parent 0 5d03bc08d59c
child 163 bbf46f59e123
equal deleted inserted replaced
18:5e30ef2e26cb 19:ac96196b945c
   250 			}
   250 			}
   251 		}
   251 		}
   252 
   252 
   253 	for (CWsSpriteBase * sprite = iWsWin->iSpriteList; sprite; sprite = sprite->Next())
   253 	for (CWsSpriteBase * sprite = iWsWin->iSpriteList; sprite; sprite = sprite->Next())
   254 		{
   254 		{
       
   255         TBool hasRedrawBegun = EFalse;
   255 		STACK_REGION redrawRegion;
   256 		STACK_REGION redrawRegion;
   256 		sprite->CalcRedrawRegion(aRegion, redrawRegion);
   257 		sprite->CalcRedrawRegion(aRegion, redrawRegion);
   257 		if(redrawRegion.CheckError() || !redrawRegion.IsEmpty())
   258 		if(redrawRegion.CheckError() || !redrawRegion.IsEmpty())
   258 			{
   259 			{
   259 			if (sprite->IsFlashingEnabled() || sprite->IsDirty() || sprite->HasAnimation())
   260 			if (sprite->IsFlashingEnabled() || sprite->IsDirty() || sprite->HasAnimation())
   260 				{
   261 				{
   261 				AnnotateSpriteRedrawStart(*iWsWin, *sprite, redrawRegion);
   262                 if (sprite->IsDirty() || sprite->HasAnimation())
       
   263                     {
       
   264                     AnnotateSpriteRedrawStart(*iWsWin, *sprite, redrawRegion);
       
   265                     hasRedrawBegun = ETrue;
       
   266                     }
   262 				
   267 				
   263 				if(sprite->HasAnimation())
   268 				if(sprite->HasAnimation())
   264 					{
   269 					{
   265 					CWsAnim* anim = static_cast<CWsSprite*>(sprite)->iAnim;
   270 					CWsAnim* anim = static_cast<CWsSprite*>(sprite)->iAnim;
   266 					WS_ASSERT_DEBUG(anim,EWsPanicAnim);
   271 					WS_ASSERT_DEBUG(anim,EWsPanicAnim);
   274 						return;
   279 						return;
   275 						}
   280 						}
   276 					}
   281 					}
   277 				
   282 				
   278 				//...call Redraw on the sprite
   283 				//...call Redraw on the sprite
   279 				aGc->Reset();
   284 				if (hasRedrawBegun)
       
   285 				    {
       
   286                     aGc->Reset();
       
   287 				    }
   280 				sprite->Redraw(aGc, redrawRegion);
   288 				sprite->Redraw(aGc, redrawRegion);
   281 				
   289 				
   282 				AnnotateSpriteRedrawEnd(*iWsWin, *sprite);
   290 				if (hasRedrawBegun)
       
   291 				    {
       
   292                     AnnotateSpriteRedrawEnd(*iWsWin, *sprite);
       
   293 				    }
   283 				}
   294 				}
   284 			}
   295 			}
   285 		redrawRegion.Close();
   296 		redrawRegion.Close();
   286 		}
   297 		}
   287 	}
   298 	}