diff -r 2717213c588a -r 9f66f99ee56f graphicsdeviceinterface/screendriver/sgeneric/scdraw.inl --- a/graphicsdeviceinterface/screendriver/sgeneric/scdraw.inl Tue Jun 22 15:21:29 2010 +0300 +++ b/graphicsdeviceinterface/screendriver/sgeneric/scdraw.inl Fri Sep 24 16:14:28 2010 +0300 @@ -98,13 +98,30 @@ template void CGenericScreenDevice::Update(const TRegion& aRegion) { - iHelper.Update(aRegion); + if(!aRegion.IsEmpty() && !aRegion.CheckError()) + { + if (aRegion.Count()>KMaxUpdateRegionRectangles) + { + UpdateRegion(aRegion.BoundingRect()); + } + else + { + TInt rcCnt = aRegion.Count(); + for (TInt ii=0; ii < rcCnt; ++ii) + { + UpdateRegion(aRegion[ii]); //Applies deorientate (offset, scale, rotate) + } + } + } + Update(); } template void CGenericScreenDevice::UpdateRegion(const TRect& aRect) - { - iHelper.UpdateRegion(aRect); - } + { + const TRect rect = CDrawXxxBppBitmap::DeOrientate(aRect);//rect - physical coordinates + + iHelper.UpdateRegion(rect); + } template TInt CGenericScreenDevice::GetInterface(TInt aInterfaceId, TAny*& aInterface) {