webengine/osswebengine/WebCore/platform/symbian/bitmap/MaskedBitmap.cpp
branchRCL_3
changeset 37 ac77f89b1d9e
parent 27 6297cdf66332
child 38 4917f9bf7995
--- a/webengine/osswebengine/WebCore/platform/symbian/bitmap/MaskedBitmap.cpp	Wed Mar 31 23:16:40 2010 +0300
+++ b/webengine/osswebengine/WebCore/platform/symbian/bitmap/MaskedBitmap.cpp	Wed Apr 14 17:06:56 2010 +0300
@@ -22,6 +22,7 @@
 #include <fbs.h>
 #include <bitstd.h>
 #include <bitdev.h>
+#include <Browser_Platform_Variant.hrh>
 
 
 // ======================== STATIC FACTORY FUNCTIONS ===========================
@@ -472,6 +473,45 @@
         {
         gc.SetBrushStyle(CGraphicsContext::ENullBrush);
         TPoint off(srcPt.iX, srcPt.iY);
+
+#ifdef BRDO_PERF_IMPROVEMENTS_ENABLED_FF        
+        while ((bmpRect.iBr.iX - off.iX)> 2*SizeInPixels().iWidth)
+            {
+            TInt w = SizeInPixels().iWidth;
+            TInt h = SizeInPixels().iHeight;
+            TInt new_width = 2*w;
+
+            CFbsBitmap* bitmap = new (ELeave) CFbsBitmap;
+            bitmap->Create( TSize(new_width,h), iBitmap->DisplayMode() );
+
+            CBitmapContext* bitmapContext=NULL;
+            CFbsBitmapDevice* bitmapDevice = CFbsBitmapDevice::NewL(bitmap);
+            CleanupStack::PushL(bitmapDevice);
+            User::LeaveIfError(bitmapDevice->CreateBitmapContext(bitmapContext));
+            CleanupStack::PushL(bitmapContext);
+            bitmapContext->BitBlt(TPoint(0,0),iBitmap);
+            bitmapContext->BitBlt(TPoint(w,0),iBitmap);
+            CleanupStack::PopAndDestroy(2);
+            delete iBitmap;
+            iBitmap = bitmap;
+
+            if (HasMask())
+                {
+                CFbsBitmap* mask = new (ELeave) CFbsBitmap;
+                mask->Create( TSize(new_width,h), iMask->DisplayMode() );
+                CBitmapContext* bitmapContext=NULL;
+                CFbsBitmapDevice* bitmapDevice = CFbsBitmapDevice::NewL(mask);
+                CleanupStack::PushL(bitmapDevice);
+                User::LeaveIfError(bitmapDevice->CreateBitmapContext(bitmapContext));
+                CleanupStack::PushL(bitmapContext);
+                bitmapContext->BitBlt(TPoint(0,0),iMask);
+                bitmapContext->BitBlt(TPoint(w,0),iMask);
+                CleanupStack::PopAndDestroy(2);
+                delete iMask;
+                iMask = mask;
+                }
+            }
+#endif
         for (TInt x = off.iX; x<bmpRect.iBr.iX; x+=SizeInPixels().iWidth) 
             {
             for (TInt y = off.iY; y<bmpRect.iBr.iY; y+=SizeInPixels().iHeight)