Revision: 201039 RCL_3 PDK_3.0.4
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Wed, 13 Oct 2010 15:34:15 +0300
branchRCL_3
changeset 63 e1987ab3768a
parent 57 eaa079afe64c
child 66 8ee165fddeb6
Revision: 201039 Kit: 201041
rom/alfred.iby
uiaccelerator_plat/alf_client_server_api/inc/alf/alfappui.h
uiaccelerator_plat/alf_core_toolkit_api/inc/uiacceltk/HuiCanvasVisual.h
uiaccelerator_plat/alf_core_toolkit_api/inc/uiacceltk/huigifanimationtexture.h
uiaccelerator_plat/alf_extension_api/inc/alf/alfconstants.h
uiaccelerator_plat/alf_visual_api/inc/alf/alftexture.h
uiacceltk/hitchcock/Client/eabi/alfclientu.DEF
uiacceltk/hitchcock/Client/inc/alfclient.h
uiacceltk/hitchcock/Client/src/alfclient.cpp
uiacceltk/hitchcock/Client/src/alftexture.cpp
uiacceltk/hitchcock/Client/src/alftexturemanager.cpp
uiacceltk/hitchcock/ServerCore/Inc/alfappsrvsession.h
uiacceltk/hitchcock/ServerCore/Inc/alfbridge.h
uiacceltk/hitchcock/ServerCore/Src/alfappsrvsession.cpp
uiacceltk/hitchcock/ServerCore/Src/alfappui.cpp
uiacceltk/hitchcock/ServerCore/Src/alfbridge.cpp
uiacceltk/hitchcock/ServerCore/Src/alfnodes.cpp
uiacceltk/hitchcock/coretoolkit/BWINS/hitchcocku.DEF
uiacceltk/hitchcock/coretoolkit/eabi/hitchcocku.DEF
uiacceltk/hitchcock/coretoolkit/group/huitk_base.mmp
uiacceltk/hitchcock/coretoolkit/inc/HuiCmdBufferBrush.h
uiacceltk/hitchcock/coretoolkit/inc/HuiFxEngine.h
uiacceltk/hitchcock/coretoolkit/inc/HuiFxVisualLayer.h
uiacceltk/hitchcock/coretoolkit/inc/HuiRosterImpl.h
uiacceltk/hitchcock/coretoolkit/inc/huicanvaswshwgc.h
uiacceltk/hitchcock/coretoolkit/inc/huieffectable.h
uiacceltk/hitchcock/coretoolkit/rendervg10/inc/HuiVg10Texture.h
uiacceltk/hitchcock/coretoolkit/rendervg10/src/HuiVg10Texture.cpp
uiacceltk/hitchcock/coretoolkit/src/HuiCanvasTextureCache.cpp
uiacceltk/hitchcock/coretoolkit/src/HuiCanvasVisual.cpp
uiacceltk/hitchcock/coretoolkit/src/HuiCmdBufferBrush.cpp
uiacceltk/hitchcock/coretoolkit/src/HuiEnv.cpp
uiacceltk/hitchcock/coretoolkit/src/HuiFxEffectParser.cpp
uiacceltk/hitchcock/coretoolkit/src/HuiFxEngine.cpp
uiacceltk/hitchcock/coretoolkit/src/HuiFxVisualLayer.cpp
uiacceltk/hitchcock/coretoolkit/src/HuiImageVisual.cpp
uiacceltk/hitchcock/coretoolkit/src/HuiRosterImpl.cpp
uiacceltk/hitchcock/coretoolkit/src/HuiVisual.cpp
uiacceltk/hitchcock/coretoolkit/src/huicanvaswshwgc.cpp
uiacceltk/hitchcock/coretoolkit/src/huigifanimationtexture.cpp
uiacceltk/hitchcock/goommonitor/data/goomconfig.xml
uiacceltk/hitchcock/goommonitor/inc/goommemorymonitor.h
uiacceltk/hitchcock/goommonitor/src/goomactionlist.cpp
uiacceltk/hitchcock/goommonitor/src/goommemorymonitor.cpp
uiacceltk/hitchcock/goommonitor/src/goommonitorsession.cpp
uiacceltk/hitchcock/group/core_exports.inc
--- a/rom/alfred.iby	Wed Sep 15 13:12:27 2010 +0300
+++ b/rom/alfred.iby	Wed Oct 13 15:34:15 2010 +0300
@@ -128,7 +128,6 @@
 data=DATAZ_/RESOURCE_FILES_DIR/effects/informationnote_disappear.fxml RESOURCE_FILES_DIR/effects/informationnote_disappear.fxml
 data=DATAZ_/RESOURCE_FILES_DIR/effects/layoutswitch_appear.fxml RESOURCE_FILES_DIR/effects/layoutswitch_appear.fxml
 data=DATAZ_/RESOURCE_FILES_DIR/effects/layoutswitch_disappear.fxml RESOURCE_FILES_DIR/effects/layoutswitch_disappear.fxml
-data=DATAZ_/RESOURCE_FILES_DIR/effects/longappstart_img.mbm RESOURCE_FILES_DIR/effects/longappstart_img.mbm
 data=DATAZ_/RESOURCE_FILES_DIR/effects/musicplayer_popup_appear.fxml RESOURCE_FILES_DIR/effects/musicplayer_popup_appear.fxml
 data=DATAZ_/RESOURCE_FILES_DIR/effects/musicplayer_popup_disappear.fxml RESOURCE_FILES_DIR/effects/musicplayer_popup_disappear.fxml
 data=DATAZ_/RESOURCE_FILES_DIR/effects/musicplayer_viewswitch_in.fxml RESOURCE_FILES_DIR/effects/musicplayer_viewswitch_in.fxml
--- a/uiaccelerator_plat/alf_client_server_api/inc/alf/alfappui.h	Wed Sep 15 13:12:27 2010 +0300
+++ b/uiaccelerator_plat/alf_client_server_api/inc/alf/alfappui.h	Wed Oct 13 15:34:15 2010 +0300
@@ -210,6 +210,8 @@
     TInt GetLastActiveClient();
     RAlfBridgerClient* BridgerClient();
 
+    void ReleaseOptionalGpuMemory();
+    
 private:
 
     void CreateHuiEnvL();
--- a/uiaccelerator_plat/alf_core_toolkit_api/inc/uiacceltk/HuiCanvasVisual.h	Wed Sep 15 13:12:27 2010 +0300
+++ b/uiaccelerator_plat/alf_core_toolkit_api/inc/uiacceltk/HuiCanvasVisual.h	Wed Oct 13 15:34:15 2010 +0300
@@ -433,10 +433,10 @@
     IMPORT_C void StoreRenderBufferL();
     void DrawStoredVisualRenderBuffer(TInt aCanvasDrawMode) const;
     void DrawStoredFullScreenRenderBuffer(TInt aCanvasDrawMode, CHuiGc& aGc) const;
-    void DrawExternalImage(CHuiGc& aGc) const;
     IMPORT_C void FreeRenderBuffer();
     IMPORT_C TRect CommandBufferCoverage(TInt aOrientation);
-
+    TBool KeepCache() const;
+    
 protected:
     virtual void VisualExtension(const TUid& aExtensionUid, TAny** aExtensionParams);
 
@@ -456,7 +456,6 @@
     TBool CollectRecursivePaintedRegion(TRegion& aRecursivePaintRegion, TInt aExcludeCanvasFlags) const;
     
     TBool CanSkipDrawing() const;
-    TBool KeepNoCache() const;
     TBool EffectReadyToDrawNextFrame() const; 
 
 private: 
--- a/uiaccelerator_plat/alf_core_toolkit_api/inc/uiacceltk/huigifanimationtexture.h	Wed Sep 15 13:12:27 2010 +0300
+++ b/uiaccelerator_plat/alf_core_toolkit_api/inc/uiacceltk/huigifanimationtexture.h	Wed Oct 13 15:34:15 2010 +0300
@@ -49,7 +49,6 @@
     IMPORT_C void Start();
     IMPORT_C void Stop();
     IMPORT_C void EnableAnimation(TBool aEnable);
-    IMPORT_C void DeleteAnimatedTexture();
 protected:
     CHuiGifAnimationTexture(CHuiTextureManager& aManager,THuiTextureUploadFlags aFlags, TInt aId);
     void ConstructL(const TDesC& aFilename);
--- a/uiaccelerator_plat/alf_extension_api/inc/alf/alfconstants.h	Wed Sep 15 13:12:27 2010 +0300
+++ b/uiaccelerator_plat/alf_extension_api/inc/alf/alfconstants.h	Wed Oct 13 15:34:15 2010 +0300
@@ -360,7 +360,6 @@
     EAlfTextureNotifySkinChanged,
     EAlfTextureUpdateOwnerId,
     EAlfTextureSetAutoSizeParams,
-    EAlfTextureCleanAnimation,
         
     // Display subsession functions
     EAlfDisplaySetClearBackground =2200,
--- a/uiaccelerator_plat/alf_visual_api/inc/alf/alftexture.h	Wed Sep 15 13:12:27 2010 +0300
+++ b/uiaccelerator_plat/alf_visual_api/inc/alf/alftexture.h	Wed Oct 13 15:34:15 2010 +0300
@@ -343,12 +343,6 @@
     */
     IMPORT_C TInt RefCountingAction() const;
 
-    /**
-    * Cleans the content for the animated texture when unloading has happened
-    * @return 
-    */
-    void ClearAnimatedContent();
-    
     /** @endAPI */
 
     enum TAlfTextureReleaseFlags
--- a/uiacceltk/hitchcock/Client/eabi/alfclientu.DEF	Wed Sep 15 13:12:27 2010 +0300
+++ b/uiacceltk/hitchcock/Client/eabi/alfclientu.DEF	Wed Oct 13 15:34:15 2010 +0300
@@ -1347,4 +1347,3 @@
 	_ZN10CAlfDrawer26FallbackCopyScreenToBitmapER15CWsScreenDeviceP10CFbsBitmapRK5TRect @ 1346 NONAME
 	_ZN17AlfDrawerInternal18CopyScreenToBitmapEP25MAlfDrawerScreenInterfaceP10CFbsBitmapRK5TRect @ 1347 NONAME
 
-
--- a/uiacceltk/hitchcock/Client/inc/alfclient.h	Wed Sep 15 13:12:27 2010 +0300
+++ b/uiacceltk/hitchcock/Client/inc/alfclient.h	Wed Oct 13 15:34:15 2010 +0300
@@ -281,13 +281,6 @@
      * @param aParams auto size paramters.
      */
     TInt TextureSetAutoSizeParams( TInt aId, TInt aManagerId, const TAlfTextureAutoSizeParams& aParams );
-    
-    /**
-     * Cleans the animated texture content
-     *
-     * @param aId ID of the texture.
-     */
-    TInt ClearTextureAnimation( TInt aId );
 
 // Misc
 
--- a/uiacceltk/hitchcock/Client/src/alfclient.cpp	Wed Sep 15 13:12:27 2010 +0300
+++ b/uiacceltk/hitchcock/Client/src/alfclient.cpp	Wed Oct 13 15:34:15 2010 +0300
@@ -1114,10 +1114,5 @@
         }
     }
 
-TInt RAlfClient::ClearTextureAnimation( TInt aId )
-    {
-    TPckg<TInt> idPckg(aId);
-    return SendReceive(EAlfTextureCleanAnimation, TIpcArgs(aId) );
-    }
 // end of file
  
--- a/uiacceltk/hitchcock/Client/src/alftexture.cpp	Wed Sep 15 13:12:27 2010 +0300
+++ b/uiacceltk/hitchcock/Client/src/alftexture.cpp	Wed Oct 13 15:34:15 2010 +0300
@@ -485,11 +485,4 @@
 	return manager;     	               
     }
     
-void CAlfTexture::ClearAnimatedContent()
-    {
-    if (iData->iAnimated)
-        {
-        iData->iEnv->Client().ClearTextureAnimation( iData->iId );
-        }
-    }
 
--- a/uiacceltk/hitchcock/Client/src/alftexturemanager.cpp	Wed Sep 15 13:12:27 2010 +0300
+++ b/uiacceltk/hitchcock/Client/src/alftexturemanager.cpp	Wed Oct 13 15:34:15 2010 +0300
@@ -778,7 +778,6 @@
         else
             {
             entry.iTexture->StopAnimation();      
-            entry.iTexture->ClearAnimatedContent();
             }
         
         TInt releaseFlags = entry.iTexture->ReleaseFlags();
@@ -805,9 +804,7 @@
             }
         else
             {
-            entry.iTexture->StopAnimation();
-            
-            entry.iTexture->ClearAnimatedContent();
+            entry.iTexture->StopAnimation();        
             }           
         
         TInt releaseFlags = entry.iTexture->ReleaseFlags();
--- a/uiacceltk/hitchcock/ServerCore/Inc/alfappsrvsession.h	Wed Sep 15 13:12:27 2010 +0300
+++ b/uiacceltk/hitchcock/ServerCore/Inc/alfappsrvsession.h	Wed Oct 13 15:34:15 2010 +0300
@@ -32,6 +32,7 @@
 class CAlfSrvEffectEnv;
 class THuiTexturePreferredProperties;
 class CAlfSrvTextureManager;
+class MHuiBitmapProvider;
 
 /**
  *  Session/service class in the server side.
@@ -210,7 +211,7 @@
 
     void DoFocusLostEffect(TInt aEffect, CHuiVisual& aRootVisual );
     void DoFocusGainedEffect(TInt aEffect, CHuiVisual& aRootVisual );
-    void TextureCleanAnimation(const RMessage2& aMessage);
+
     /**
      * Checks that texture owner id has been updated.
      * @param aMessage message.
@@ -369,7 +370,17 @@
     void EnvForceSwRendering(const RMessage2& aMessage);
     void EnvGetSizeAndRotation(const RMessage2& aMessage);
     void EnvReadPixels(const RMessage2& aMessage);
-        
+
+    /**
+     * Check if GPU memory should be released before upload.
+     */
+    TBool ShouldReleaseGpuMemoryL(MHuiBitmapProvider& aProvider, TInt aId);
+
+    /**
+     * Release optional GPU memory (mainly caches).
+     */
+    void ReleaseOptionalGpuMemory();
+
 private:
 
     // Owned items which need to be deleted with the session is terminated.
--- a/uiacceltk/hitchcock/ServerCore/Inc/alfbridge.h	Wed Sep 15 13:12:27 2010 +0300
+++ b/uiacceltk/hitchcock/ServerCore/Inc/alfbridge.h	Wed Oct 13 15:34:15 2010 +0300
@@ -248,6 +248,11 @@
     void OnLowMemoryModifyAllEffects();
 
     /**
+     * Releases optional GPU memory.
+     */
+    void ReleaseOptionalGpuMemory();
+
+    /**
      * Gets size & rotation.
      * @param aSize size.
      * @param aRotation rotation.
--- a/uiacceltk/hitchcock/ServerCore/Src/alfappsrvsession.cpp	Wed Sep 15 13:12:27 2010 +0300
+++ b/uiacceltk/hitchcock/ServerCore/Src/alfappsrvsession.cpp	Wed Oct 13 15:34:15 2010 +0300
@@ -66,6 +66,13 @@
 
 const TReal32 KAlfUseDefaultFrameRate = 0.f;
 
+/**
+ * If estimated memory consumption is larger than this constant,
+ * then ALF will do additional steps to ensure that texture loading succeeds.
+ * However, client is still responsible of requesting sufficient memory from GOOM.
+ */
+const TInt KAlfReleaseMemoryThresholdInBytes = 3000000;
+
 TBool RealCompare( 
     TReal32 aCompare1, 
     TReal32 aCompare2, 
@@ -746,14 +753,6 @@
                 }
             break;
             }
-        case EAlfTextureCleanAnimation:
-            {
-            if ( RequireTextureOwnerId( aMessage ) )
-                {
-                TextureCleanAnimation(aMessage);
-                }
-            break;
-            }    
         case EAlfTextureStartAnimation:
             {
             if ( RequireTextureOwnerId( aMessage ) )
@@ -1547,6 +1546,14 @@
         
         TBool textureAlreadyExists = (env->TextureManager().Texture(id) != &env->TextureManager().BlankTexture());
         
+        // If we cannot load alf client texture, then it's quite hard to recover from that situation.
+        // If texture is sufficiently large, we will release optional GPU RAM automatically.
+		// Still, client should beforehand use GOOM to make sure there is enough memory.
+        if ( ShouldReleaseGpuMemoryL( *provider, id ) )
+            {
+            ReleaseOptionalGpuMemory();
+            }
+        
         CHuiTexture& texture = env->TextureManager().CreateTextureL(id,
                                      provider,
                                      (THuiTextureUploadFlags)inputFlags);
@@ -2912,19 +2919,64 @@
     aMessage.Complete( err );
     }
 
-void CAlfAppSrvSession::TextureCleanAnimation(const RMessage2& aMessage)
+// ---------------------------------------------------------------------------
+// ShouldReleaseGpuMemoryL
+// ---------------------------------------------------------------------------
+//    
+TBool CAlfAppSrvSession::ShouldReleaseGpuMemoryL(MHuiBitmapProvider& aProvider, TInt aId)
     {
-    TInt id = aMessage.Int0();
-    CHuiGifAnimationTexture* tex = NULL;
-    for (TInt index = 0; index < iAnimatedTextures.Count(); index++)
+    // Estimate GPU RAM requirement. If higher than threshold, memory should be released.
+    CFbsBitmap* bitmap = NULL;
+    CFbsBitmap* mask = NULL;
+
+    // ProvideBitmapL will handle bitmap & mask clean up (if it leaves).
+    aProvider.ProvideBitmapL(aId, bitmap, mask);
+    
+    // Calculate estimated memory consumption.
+    TInt estimatedMemoryConsumption = 0;
+    
+    if ( bitmap )
         {
-        tex = iAnimatedTextures.operator[](index);
-        if (tex->Id() == id)
+        TSize bitmapSize = bitmap->SizeInPixels();
+    
+        if ( mask )
+            {
+            estimatedMemoryConsumption += bitmapSize.iWidth * bitmapSize.iHeight * 4;
+            }
+        else
             {
-            tex->DeleteAnimatedTexture();
-            break;
+            switch ( bitmap->DisplayMode() )
+                {
+            case EGray256:
+                estimatedMemoryConsumption += bitmapSize.iWidth * bitmapSize.iHeight;
+                break;
+                
+            case EColor64K:
+                estimatedMemoryConsumption += bitmapSize.iWidth * bitmapSize.iHeight * 2;
+                break;
+                        
+            default:
+                estimatedMemoryConsumption += bitmapSize.iWidth * bitmapSize.iHeight * 4;
+                break;
+                }
             }
         }
-    aMessage.Complete( KErrNone );    
+    
+    // Delete bitmap & mask.
+    delete bitmap;
+    delete mask;
+    
+    return estimatedMemoryConsumption >= KAlfReleaseMemoryThresholdInBytes;
     }
+
+// ---------------------------------------------------------------------------
+// ReleaseOptionalGpuMemory
+// ---------------------------------------------------------------------------
+//    
+void CAlfAppSrvSession::ReleaseOptionalGpuMemory()
+    {
+    // Release optional GPU memory (mainly caches).
+    AlfAppUi()->ReleaseOptionalGpuMemory();
+    }
+
 // End of file    
--- a/uiacceltk/hitchcock/ServerCore/Src/alfappui.cpp	Wed Sep 15 13:12:27 2010 +0300
+++ b/uiacceltk/hitchcock/ServerCore/Src/alfappui.cpp	Wed Oct 13 15:34:15 2010 +0300
@@ -1416,4 +1416,9 @@
     return 0;
     }
 
+void CAlfAppUi::ReleaseOptionalGpuMemory()
+    {
+    iData->iBridgeObj->ReleaseOptionalGpuMemory();
+    }
+
 // end of file
--- a/uiacceltk/hitchcock/ServerCore/Src/alfbridge.cpp	Wed Sep 15 13:12:27 2010 +0300
+++ b/uiacceltk/hitchcock/ServerCore/Src/alfbridge.cpp	Wed Oct 13 15:34:15 2010 +0300
@@ -7077,6 +7077,16 @@
 // ---------------------------------------------------------------------------
 // ---------------------------------------------------------------------------
 // 
+void CAlfBridge::ReleaseOptionalGpuMemory()
+    {
+    __ALFLOGSTRING("CAlfBridge::ReleaseOptionalGpuMemory");
+    iHuiEnv->HandleOutOfTextureMemory();
+    __ALFLOGSTRING("CAlfBridge::ReleaseOptionalGpuMemory done");
+    }
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+// 
 TInt CAlfBridge::GetSizeAndRotation(TSize& aSize, TInt& aRotation)
     {
     if ( !iAlfScreens.Count() )
--- a/uiacceltk/hitchcock/ServerCore/Src/alfnodes.cpp	Wed Sep 15 13:12:27 2010 +0300
+++ b/uiacceltk/hitchcock/ServerCore/Src/alfnodes.cpp	Wed Oct 13 15:34:15 2010 +0300
@@ -394,60 +394,61 @@
 // ---------------------------------------------------------------------------
 //
 
+// ---------------------------------------------------------------------------
+// CAlfNode::TraverseNodeTree
+// Traverse through node tree and fill node array 
+// ---------------------------------------------------------------------------
+//
+
 void CAlfNode::TraverseNodeTree( CAlfNode* node,  RPointerArray<CAlfNode>& nodes, TBool aTraverseOnlySiblings, TBool aAddMe)
     {
     // Exit if we've already finished walking the tree.
     if ( node == NULL) 
         { 
-        __ALFLOGSTRING("TraverseNodeTree returning - NULL");                                  
+        __ALFLOGSTRING(" returning NULL");                                  
         return;
         }
-    
-    while ( node )
+    if (!aTraverseOnlySiblings)
         {
-        if (!aTraverseOnlySiblings)
-            {   
-            if ( node->iSpriteChild ) 
-                {
-                CAlfNode* spritenode = node->iSpriteChild ;
-                while ( spritenode )
-                    {
-                    nodes.Append( spritenode );                
-                    spritenode = spritenode->iSibling;
-                    }
-                }
-    
-            if( node->iTextCursor )
-                {
-                nodes.Append(node->iTextCursor );            
-                }
-    
-            if( node->iAnimChild )
+        if ( node->iSpriteChild ) 
+            {
+        CAlfNode* spritenode = node->iSpriteChild ;
+            while ( spritenode )
                 {
-                CAlfNode* animnode = node->iAnimChild ;
-                while ( animnode )
-                    {
-                    nodes.Append( animnode );                
-                    animnode = animnode->iSibling;
-                    }
-                }
-        
-            if ( node->iChild)
-                {                
-                TraverseNodeTree(node->iChild , nodes, EFalse, ETrue);            
+                nodes.Append( spritenode );                
+                spritenode = spritenode->iSibling;
                 }
-            } 
-
-        if (aAddMe)
+            }
+    
+        if( node->iTextCursor )
             {
-            nodes.Append( node );
+            nodes.Append(node->iTextCursor );            
+            }
+    
+        if( node->iAnimChild )
+            {
+            CAlfNode* animnode = node->iAnimChild ;
+            while ( animnode )
+                {
+                nodes.Append( animnode );                
+                animnode = animnode->iSibling;
+                }
             }
+        
+        if ( node->iChild)
+            {                
+            TraverseNodeTree(node->iChild , nodes, EFalse, ETrue);            
+            }
+        } 
 
-        // Without recursion, continue with the following:
-        // TraverseNodeTree(node->iSibling, nodes, ETrue, ETrue);
-        node = node->iSibling;
-        aTraverseOnlySiblings = ETrue;
-        aAddMe = ETrue;
+    if (aAddMe)
+        {
+        nodes.Append( node );
+        }
+
+    if ( node->iSibling )
+        {                
+        TraverseNodeTree(node->iSibling, nodes, ETrue, ETrue);               
         }
     }
 
--- a/uiacceltk/hitchcock/coretoolkit/BWINS/hitchcocku.DEF	Wed Sep 15 13:12:27 2010 +0300
+++ b/uiacceltk/hitchcock/coretoolkit/BWINS/hitchcocku.DEF	Wed Oct 13 15:34:15 2010 +0300
@@ -1609,5 +1609,4 @@
 	?ReleaseAllCachedRenderTargets@CHuiFxGroupLayer@@UAEXAAVCHuiFxEngine@@@Z @ 1608 NONAME ; void CHuiFxGroupLayer::ReleaseAllCachedRenderTargets(class CHuiFxEngine &)
 	?ReleaseAllCachedRenderTargets@CHuiFxFilterLayer@@UAEXAAVCHuiFxEngine@@@Z @ 1609 NONAME ; void CHuiFxFilterLayer::ReleaseAllCachedRenderTargets(class CHuiFxEngine &)
 	?ReleaseAllCachedRenderTargets@CHuiFxLayer@@UAEXAAVCHuiFxEngine@@@Z @ 1610 NONAME ; void CHuiFxLayer::ReleaseAllCachedRenderTargets(class CHuiFxEngine &)
-	?DeleteAnimatedTexture@CHuiGifAnimationTexture@@QAEXXZ @ 1611 NONAME ; void CHuiGifAnimationTexture::DeleteAnimatedTexture(void)
 
--- a/uiacceltk/hitchcock/coretoolkit/eabi/hitchcocku.DEF	Wed Sep 15 13:12:27 2010 +0300
+++ b/uiacceltk/hitchcock/coretoolkit/eabi/hitchcocku.DEF	Wed Oct 13 15:34:15 2010 +0300
@@ -2010,5 +2010,4 @@
 	_ZN16CHuiFxGroupLayer29ReleaseAllCachedRenderTargetsER12CHuiFxEngine @ 2009 NONAME
 	_ZN17CHuiFxFilterLayer29ReleaseAllCachedRenderTargetsER12CHuiFxEngine @ 2010 NONAME
 	_ZN17CHuiFxVisualLayer29ReleaseAllCachedRenderTargetsER12CHuiFxEngine @ 2011 NONAME
-	_ZN23CHuiGifAnimationTexture21DeleteAnimatedTextureEv @ 2012 NONAME
 
--- a/uiacceltk/hitchcock/coretoolkit/group/huitk_base.mmp	Wed Sep 15 13:12:27 2010 +0300
+++ b/uiacceltk/hitchcock/coretoolkit/group/huitk_base.mmp	Wed Oct 13 15:34:15 2010 +0300
@@ -205,7 +205,7 @@
 LIBRARY         fbscli.lib
 LIBRARY         gdi.lib
 LIBRARY         bitgdi.lib
-LIBRARY         libGLES_CM.lib
+LIBRARY         libEGL.lib
 LIBRARY         imageconversion.lib
 LIBRARY         charconv.lib
 LIBRARY         hal.lib
--- a/uiacceltk/hitchcock/coretoolkit/inc/HuiCmdBufferBrush.h	Wed Sep 15 13:12:27 2010 +0300
+++ b/uiacceltk/hitchcock/coretoolkit/inc/HuiCmdBufferBrush.h	Wed Oct 13 15:34:15 2010 +0300
@@ -89,10 +89,8 @@
    void EffectDrawSelf( CHuiGc &aGc, const TRect & aDisplayRect) const;
    THuiRealRect EffectDisplayRect() const __SOFTFP;
    void SetLoadingEffect(TBool aLoading);
-   void EffectSetSource( THuiFxVisualSrcType aSource );
-   THuiFxVisualSrcType EffectGetSource() const;
-   void SetExternalTexture(CHuiTexture* aTexture);
-   CHuiTexture* ExternalTexture();
+   void EffectSetSource( TBool aIsInput1 );
+   TBool EffectGetSource() const;
    TBool EffectReadyToDrawNextFrame() const;
    
 public: // from MHuiCmdBufDestroyObserver
--- a/uiacceltk/hitchcock/coretoolkit/inc/HuiFxEngine.h	Wed Sep 15 13:12:27 2010 +0300
+++ b/uiacceltk/hitchcock/coretoolkit/inc/HuiFxEngine.h	Wed Oct 13 15:34:15 2010 +0300
@@ -149,7 +149,8 @@
     TBool HasActiveEffects() const;
     TBool HasActiveFadeEffect() const;
     
-    void ClearCache();
+    void ClearCache(TBool aOnlyCache = EFalse);
+    void HandleOutOfGpuMemory();
     
     void NotifyEffectEndObservers();
     
--- a/uiacceltk/hitchcock/coretoolkit/inc/HuiFxVisualLayer.h	Wed Sep 15 13:12:27 2010 +0300
+++ b/uiacceltk/hitchcock/coretoolkit/inc/HuiFxVisualLayer.h	Wed Oct 13 15:34:15 2010 +0300
@@ -65,8 +65,7 @@
     
 private:
     void ApplyTransformations(CHuiGc& aGc);
-    void ReleaseExtTexture();
-   
+    
     //CHuiVisual*         iVisual;
     MHuiEffectable *    iVisual;
     CHuiFxParameterManager* iParameterManager;
@@ -98,7 +97,6 @@
     TReal32             iSkewOriginY;
     TReal32             iSkewOriginZ;
     
-    CHuiTexture* iExtTexture; // This is only set for cloned object
     HBufC* iExtBitmapFile;
     TReal32 iOpacity;
     TBool iOpaqueHint;
--- a/uiacceltk/hitchcock/coretoolkit/inc/HuiRosterImpl.h	Wed Sep 15 13:12:27 2010 +0300
+++ b/uiacceltk/hitchcock/coretoolkit/inc/HuiRosterImpl.h	Wed Oct 13 15:34:15 2010 +0300
@@ -330,11 +330,8 @@
     void EffectDrawSelf( CHuiGc &aGc, const TRect & aDisplayRect) const;
     THuiRealRect EffectDisplayRect() const __SOFTFP;
     void SetLoadingEffect(TBool aLoading);
-    void EffectSetSource( THuiFxVisualSrcType aSource );
-    THuiFxVisualSrcType EffectGetSource() const;	
-    void SetExternalTexture(CHuiTexture* aTexture);
-    CHuiTexture* ExternalTexture();
-    
+    void EffectSetSource( TBool aIsInput1 );
+    TBool EffectGetSource() const;	
     TBool EffectReadyToDrawNextFrame() const;
     
     // From MHuiMemoryLevelObserver
@@ -513,7 +510,7 @@
     /** Effect */
     CHuiFxEffect* iEffect;
     TReal32 iEffectOpacity;
-    THuiFxVisualSrcType iEffectSourceType;
+    TBool iIsInput1;
 
 	/** Render buffer */
     CHuiCanvasGc* iCanvasGc;
--- a/uiacceltk/hitchcock/coretoolkit/inc/huicanvaswshwgc.h	Wed Sep 15 13:12:27 2010 +0300
+++ b/uiacceltk/hitchcock/coretoolkit/inc/huicanvaswshwgc.h	Wed Oct 13 15:34:15 2010 +0300
@@ -207,6 +207,11 @@
 	 */
     void UseWsState();
     
+    /**
+     * Returns true if canvas texture cache should be updated.
+     */
+    TBool IsCacheUpdateNeeded() const;
+    
 private:
   
  /**
--- a/uiacceltk/hitchcock/coretoolkit/inc/huieffectable.h	Wed Sep 15 13:12:27 2010 +0300
+++ b/uiacceltk/hitchcock/coretoolkit/inc/huieffectable.h	Wed Oct 13 15:34:15 2010 +0300
@@ -20,13 +20,9 @@
 #ifndef HUIEFFECTABLE_H_
 #define HUIEFFECTABLE_H_
 
-#include "HuiFxConstants.h"
-
 class THuiRealRect;
 class CHuiFxEffect;
 class CHuiGc;
-class CFbsBitmap;
-class CHuiTexture;
 
 class MHuiEffectable
     {
@@ -41,10 +37,8 @@
     virtual void EffectDrawSelf( CHuiGc &aGc, const TRect & aDisplayRect) const=0;
     virtual THuiRealRect EffectDisplayRect() const __SOFTFP=0;
     virtual void SetLoadingEffect(TBool aLoading)=0;
-    virtual void EffectSetSource( THuiFxVisualSrcType aSource )=0;
-    virtual THuiFxVisualSrcType EffectGetSource() const=0;
-    virtual void SetExternalTexture(CHuiTexture* aTexture)=0;
-    virtual CHuiTexture* ExternalTexture()=0;
+    virtual void EffectSetSource( TBool aIsInput1 )=0;
+    virtual TBool EffectGetSource() const=0;
     virtual TBool EffectReadyToDrawNextFrame() const = 0;
     };
     
--- a/uiacceltk/hitchcock/coretoolkit/rendervg10/inc/HuiVg10Texture.h	Wed Sep 15 13:12:27 2010 +0300
+++ b/uiacceltk/hitchcock/coretoolkit/rendervg10/inc/HuiVg10Texture.h	Wed Oct 13 15:34:15 2010 +0300
@@ -242,7 +242,14 @@
      * Partial bitmap upload.
      */
     void PartialBitmapUpload(THuiTexturePartialBitmapUploadParams* aParams);
-    
+
+    /**
+     * Returns ETrue if texture is large.
+     */ 
+    TBool IsLargeTexture(const TSize& aSize, VGImageFormat aFormat) const;
+
+private:
+        
     /** The render plugin that created this texture. */
     CHuiVg10RenderPlugin& iRenderPlugin;
     
--- a/uiacceltk/hitchcock/coretoolkit/rendervg10/src/HuiVg10Texture.cpp	Wed Sep 15 13:12:27 2010 +0300
+++ b/uiacceltk/hitchcock/coretoolkit/rendervg10/src/HuiVg10Texture.cpp	Wed Oct 13 15:34:15 2010 +0300
@@ -327,6 +327,7 @@
     VGbitfield qualityFlags = VG_IMAGE_QUALITY_BETTER | VG_IMAGE_QUALITY_FASTER | VG_IMAGE_QUALITY_NONANTIALIASED;
     TBool hasAlpha = (aMaskBitmap != NULL);
     TBool conversionRequired = ETrue;
+    
     TSize size = Size();
     TSize textureSize = MaxTextureSize();
     textureSize.iWidth = Min(size.iWidth, textureSize.iWidth);
@@ -402,13 +403,23 @@
         imageInternalFormat = imageSourceFormat;
         }
 
+    // For large textures, GPU OOM case is checked. It's expected that client
+	// uses GOOM to get some space, but even that doesn't guarantee that later
+	// when texture is created there is continuous space available.
+    TBool checkErrors = IsLargeTexture(textureSize, imageInternalFormat); 
+    if ( checkErrors )
+        {
+        // To reset error before upload
+        iRenderPlugin.VgError();
+        }
+
     // Create the actual image
     VGImage image = vgCreateImage(imageInternalFormat, textureSize.iWidth, textureSize.iHeight, qualityFlags);
 
     if (image == VG_INVALID_HANDLE)
         {
         User::Leave(KErrNoMemory);
-        }
+        }   
     
     if (!conversionRequired)
         {
@@ -455,7 +466,7 @@
             const void* data = convBitmap.DataAddress();
             TInt stride      = CFbsBitmap::ScanLineLength(size.iWidth, convBitmap.DisplayMode());
             vgImageSubData(image, data, stride, imageSourceFormat, 0, 0, textureSize.iWidth, textureSize.iHeight);
-            convBitmap.EndDataAccess( ETrue );
+            convBitmap.EndDataAccess( ETrue );            
             }
         else
             {
@@ -490,6 +501,18 @@
             vgImageSubData(image, data, stride, imageSourceFormat, 0, 0, textureSize.iWidth, textureSize.iHeight);
             convBitmap.EndDataAccess( ETrue );
             }
+        }   
+
+    if ( checkErrors )
+        {
+        // Check if failed
+        VGErrorCode code = iRenderPlugin.VgError();
+
+        if (code == VG_OUT_OF_MEMORY_ERROR)
+            {
+            vgDestroyImage(image);
+            User::Leave(KErrNoMemory);
+            }
         }
     
     // Save the image handle
@@ -1256,7 +1279,7 @@
     VGImageFormat imageInternalFormat = VG_sARGB_8888;
 #endif
     
-    VGbitfield qualityFlags = VG_IMAGE_QUALITY_NONANTIALIASED | VG_IMAGE_QUALITY_BETTER | VG_IMAGE_QUALITY_FASTER;
+    VGbitfield qualityFlags = VG_IMAGE_QUALITY_NONANTIALIASED; // | VG_IMAGE_QUALITY_BETTER | VG_IMAGE_QUALITY_FASTER;
     image = vgCreateImage(imageInternalFormat, aDestSize.iWidth, aDestSize.iHeight, qualityFlags);
     
     // Get the configs and displays etc. needed for creating the surface
@@ -1780,5 +1803,24 @@
         eglMakeCurrent(iPreviousEGLState.iDisplay,  iPreviousEGLState.iDrawSurface, iPreviousEGLState.iReadSurface,iPreviousEGLState.iContext);
         }
     }
+
+TBool CHuiVg10Texture::IsLargeTexture(const TSize& aSize, VGImageFormat aFormat) const
+    {
+    const TInt KHuiVgLargeTextureLimit = 3000000;
+    
+    TInt bytesPerPixel = 4;
+    if ( aFormat == VG_sRGB_565 )
+        {
+        bytesPerPixel = 2;
+        }
+    if ( aFormat == VG_A_8 )
+        {
+        bytesPerPixel = 1;
+        }
+    
+    TInt estimatedMemoryConsumption = aSize.iWidth * bytesPerPixel * aSize.iHeight;
+    return estimatedMemoryConsumption > KHuiVgLargeTextureLimit;
+    }
+
 // End of file
 
--- a/uiacceltk/hitchcock/coretoolkit/src/HuiCanvasTextureCache.cpp	Wed Sep 15 13:12:27 2010 +0300
+++ b/uiacceltk/hitchcock/coretoolkit/src/HuiCanvasTextureCache.cpp	Wed Oct 13 15:34:15 2010 +0300
@@ -2651,9 +2651,9 @@
 				RDebug::Print(_L("EGL Profiling: total mem available: %d"), prof_data[i++]);
 				break;
 				}
-		    case EGL_PROF_THREAD_ID_NOK:
+		    case EGL_PROF_PROCESS_ID_NOK:
                 {
-                if (sizeof(EGLNativeThreadIdTypeNOK) == 8)
+                if (sizeof(EGLNativeProcessIdTypeNOK) == 8)
                     {
                     i+=2;
                     }
@@ -2663,8 +2663,8 @@
                     }
                 break;
                 }
-            case EGL_PROF_THREAD_USED_PRIVATE_MEMORY_NOK:
-            case EGL_PROF_THREAD_USED_SHARED_MEMORY_NOK:
+            case EGL_PROF_PROCESS_USED_PRIVATE_MEMORY_NOK:
+            case EGL_PROF_PROCESS_USED_SHARED_MEMORY_NOK:
 			default:
 				{
                 i++;
@@ -3046,6 +3046,16 @@
 #ifdef HUI_DEBUG_PRINT_CANVAS_TEXTURE_CACHE
     RDebug::Print(_L("CHuiCanvasTextureCache::HandleOutOfTextureMemory"));
 #endif
+    
+    iHasReleasedTexts = ETrue;
+    iHasReleasedImages = ETrue;
+    iHasReleasedRenderBuffers = ETrue;
+
+    // Clear all unused textures - these will be updated later
+    iUnusedCanvasTextTextureCacheSizeInKBytes = 0;
+    iUnusedCanvasImageTextureCacheSizeInKBytes = 0;  
+    iUnusedCanvasRenderBufferCacheSizeInKBytes = 0;
+            
     DeleteAllReleasedEntries(EFalse);    
     
     // TODO: Who you gonna call when texture memory is full and we cannot ourself
@@ -3074,6 +3084,14 @@
         // Calculate how much there is space for unused textures 
         TInt availableCacheSizeInKBytes = iMaxTextureMemoryInKBytes - (totalUsedTextureMemoryInKBytes - totalUnusedCanvasTextureMemoryUsageInKBytes);
 
+        // If there is too much unused, release some textures from cache
+        if ( availableCacheSizeInKBytes < totalUnusedCanvasTextureMemoryUsageInKBytes )
+            {
+            iHasReleasedTexts = ETrue;
+            iHasReleasedImages = ETrue;
+            iHasReleasedRenderBuffers = ETrue;
+            }
+
         // Divide available space for unused textures between texts and images using defined ratio
         if (availableCacheSizeInKBytes > 0)
             {
--- a/uiacceltk/hitchcock/coretoolkit/src/HuiCanvasVisual.cpp	Wed Sep 15 13:12:27 2010 +0300
+++ b/uiacceltk/hitchcock/coretoolkit/src/HuiCanvasVisual.cpp	Wed Oct 13 15:34:15 2010 +0300
@@ -137,6 +137,7 @@
 
 CHuiCanvasVisual::~CHuiCanvasVisual()
     {
+   
     FreeRenderBuffer();	
     if (iCanvasVisualData)
         {
@@ -303,7 +304,7 @@
     if (iCanvasVisualData->iCommandsReceivedWhileNoCache)
         {
         Env().CanvasTextureCache().EnableTouchCountCheck( touchCountWasEnabled );
-        if ( !KeepNoCache() && aAction == EDrawBuffer )
+        if ( KeepCache() && aAction == EDrawBuffer )
             {
             iCanvasVisualData->iCommandsReceivedWhileNoCache = EFalse;
             }   
@@ -399,16 +400,12 @@
         return;
         }
 
-    if ((IsDelayedEffectSource() || Freezed())) 
+    if ((IsDelayedEffectSource() || Freezed()))
         {
         // Select right draw mode
         THuiCanvasDrawMode drawMode = (Flags() & EHuiVisualFlagOpaqueHint) ? EHuiCanvasDrawModeNormal : EHuiCanvasDrawModeBlend;
-        if(Effectable()->ExternalTexture())
-            {
-            DrawExternalImage(aGc);
-            return;
-            }
-        else if (StoredRenderBuffer())
+
+        if (StoredRenderBuffer())
             {
             DrawStoredFullScreenRenderBuffer(drawMode, aGc);
             return;
@@ -603,14 +600,7 @@
         // Select right draw mode
         THuiCanvasDrawMode drawMode = (Flags() & EHuiVisualFlagOpaqueHint) ? EHuiCanvasDrawModeNormal : EHuiCanvasDrawModeBlend;
         
-        THuiFxVisualSrcType effectSource = Effectable()->EffectGetSource();
-            
-        if(effectSource == EVisualSrcBitmap && Effectable()->ExternalTexture())
-            {
-            DrawExternalImage(aGc);
-            return;
-            }
-        else if (effectSource == EVisualSrcInput1 && StoredRenderBuffer())
+        if (StoredRenderBuffer())
             {
             DrawStoredFullScreenRenderBuffer(drawMode, aGc);
 			return;
@@ -850,7 +840,7 @@
 	TRAP_IGNORE(iCanvasVisualData->iCanvasPainter->SetCommandSetL(aCommands));	
 
 	// Memory optimization. Do not prepare cache if visual is inactive.
-    if (KeepNoCache())
+    if (!KeepCache())
         {
         iCanvasVisualData->iCommandsReceivedWhileNoCache = ETrue;
         ClearCache();
@@ -921,7 +911,7 @@
     TRAP_IGNORE(iCanvasVisualData->iCanvasPainter->AddCommandSetL(aMoreCommands));
     
     // Memory optimization. Do not prepare cache if visual is inactive.
-    if (KeepNoCache())
+    if (!KeepCache())
         {
         iCanvasVisualData->iCommandsReceivedWhileNoCache = ETrue;
         ClearCache();
@@ -1448,57 +1438,17 @@
     gc.PopTransformationMatrix();
     }
 
-
-void CHuiCanvasVisual::DrawExternalImage(CHuiGc& aGc) const
-    {
-    if (!Display()) 
-		{
-		return;
-		}
-		
-    if (!iHuiLayoutPrivateData->iGc)
-        {
-        CHuiRenderPlugin& renderplugin = CHuiStatic::Renderer();
-        // iHuiLayoutPrivateData->iGc is deleted in CHuiLayout destructor or CHuiCanvasVisual::FreeRenderBuffer when not needed anymore 
-        iHuiLayoutPrivateData->iGc = renderplugin.CreateCanvasGcL();
-        }
-        
-    TRect displayArea = Display()->VisibleArea();
-    
-    if (Effectable()->ExternalTexture())
-        {
-        CHuiCanvasGc& gc = *iHuiLayoutPrivateData->iGc;
-        gc.SetGc(aGc);
-        gc.SetDefaults();
-        gc.PushTransformationMatrix();
-        
-        TInt height = displayArea.Height();
-        TInt width = displayArea.Width();
-    
-        // Move the center of the image to the center of the screen
-        TInt tlX = width/2 - Effectable()->ExternalTexture()->Size().iWidth/2;
-        TInt tlY = height/2 - Effectable()->ExternalTexture()->Size().iHeight/2;
-        gc.Translate(tlX, tlY, 0.0f);
-        
-        // Draw the image and do the cleanup
-        gc.DrawImage(*Effectable()->ExternalTexture(), displayArea, TRect(TPoint(0,0), Effectable()->ExternalTexture()->Size()), CHuiGc::EStretchNone);
-    
-        gc.PopTransformationMatrix();
-        
-        }
-    }
-
 EXPORT_C void CHuiCanvasVisual::FreeRenderBuffer()
     {
     if (iCanvasVisualData)
         {
-        delete iCanvasVisualData->iStoredRenderBuffer;
-        iCanvasVisualData->iStoredRenderBuffer = NULL;
-        }
-    if (iHuiLayoutPrivateData)
-        {
-        delete iHuiLayoutPrivateData->iGc;
-        iHuiLayoutPrivateData->iGc = NULL;
+        if (iCanvasVisualData->iStoredRenderBuffer)
+            {
+            delete iCanvasVisualData->iStoredRenderBuffer;
+            iCanvasVisualData->iStoredRenderBuffer = NULL;
+            delete iHuiLayoutPrivateData->iGc;
+            iHuiLayoutPrivateData->iGc = NULL;
+            }
         }
     }
 
@@ -1675,14 +1625,14 @@
     return iCanvasVisualData->iCanvasPainter->HasCommandBuffers(EHuiCanvasBufferContainsTransparentClear);
     }
 
-TBool CHuiCanvasVisual::KeepNoCache() const
+TBool CHuiCanvasVisual::KeepCache() const
     {
     TBool rosterFrozen = Display() && Display()->Roster().IsVisibleContentFrozen();
     TBool inactive = EFalse; 
     inactive |= Flags() & EHuiVisualFlagInactive;
     inactive |= Flags() & EHuiVisualFlagUnderOpaqueHint;
     
-    return rosterFrozen || inactive;
+    return !( rosterFrozen || inactive );
     }
 
 TBool CHuiCanvasVisual::EffectReadyToDrawNextFrame() const 
--- a/uiacceltk/hitchcock/coretoolkit/src/HuiCmdBufferBrush.cpp	Wed Sep 15 13:12:27 2010 +0300
+++ b/uiacceltk/hitchcock/coretoolkit/src/HuiCmdBufferBrush.cpp	Wed Oct 13 15:34:15 2010 +0300
@@ -236,25 +236,13 @@
     {
     // TODO
     }
-void CHuiCmdBufferBrush::EffectSetSource( THuiFxVisualSrcType /*aSource*/ )
+void CHuiCmdBufferBrush::EffectSetSource( TBool /*aIsInput1*/ )
     {
     }
-THuiFxVisualSrcType CHuiCmdBufferBrush::EffectGetSource() const
-    {
-    return EVisualSrcVisual;
-    }
-
-void CHuiCmdBufferBrush::SetExternalTexture(CHuiTexture* aTexture)
+TBool CHuiCmdBufferBrush::EffectGetSource() const
     {
-    // Not used
+    return EFalse;
     }
-
-CHuiTexture* CHuiCmdBufferBrush::ExternalTexture()
-    {
-    // Not used
-    return NULL;
-    }
-
 TBool CHuiCmdBufferBrush::EffectReadyToDrawNextFrame() const
     {
     return ETrue;
--- a/uiacceltk/hitchcock/coretoolkit/src/HuiEnv.cpp	Wed Sep 15 13:12:27 2010 +0300
+++ b/uiacceltk/hitchcock/coretoolkit/src/HuiEnv.cpp	Wed Oct 13 15:34:15 2010 +0300
@@ -1784,6 +1784,7 @@
 EXPORT_C void CHuiEnv::HandleOutOfTextureMemory()
     {
     iCanvasTextureCache->HandleOutOfTextureMemory();
+    iEffectsEngine->HandleOutOfGpuMemory();    
     }
 
 
--- a/uiacceltk/hitchcock/coretoolkit/src/HuiFxEffectParser.cpp	Wed Sep 15 13:12:27 2010 +0300
+++ b/uiacceltk/hitchcock/coretoolkit/src/HuiFxEffectParser.cpp	Wed Oct 13 15:34:15 2010 +0300
@@ -356,7 +356,7 @@
                 }
             if (aLayer && aLayer->Type() == ELayerTypeGroup)
                 {
-                CHuiFxGroupLayer* group = static_cast<CHuiFxGroupLayer*>(aLayer);
+                CHuiFxGroupLayer* group = reinterpret_cast<CHuiFxGroupLayer*>(aLayer);
                 group->AddLayerL( visual ); // ownership transferred
                 }
             else
@@ -1196,8 +1196,6 @@
 #ifdef _HUI_FX_PARSER_LOGGING
     __ALFFXLOGSTRING1("CHuiFxEffectParser::GetSrcTypeL - 0x%x ",this);
 #endif
-    
-
     if (aNode->NodeType() != CMDXMLNode::EElementNode)
         {
         FAIL(KErrGeneral, _L("Text node expected while reading visual source type"));
@@ -1213,18 +1211,17 @@
     TPtrC attributeValue;
     TPtrC attributeName;
     User::LeaveIfError(((CMDXMLElement*)aNode)->AttributeDetails( attributeIndex, attributeName, attributeValue ));
- 
-
-    if( attributeValue.CompareF( KLitItem ) == 0 )
+  
+    if( attributeValue.Compare( KLitItem ) == 0 )
         {
         return EVisualSrcVisual;
         }
-    else if ( attributeValue.CompareF( KLitInput1 ) == 0 )
+    else if ( attributeValue.Compare( KLitInput1 ) == 0 )
         {
         // This means that the source is given as a parameter to the effect
         return EVisualSrcInput1;
         }
-    else if ( attributeValue.CompareF( KLitInput2 ) == 0 )
+    else if ( attributeValue.Compare( KLitInput2 ) == 0 )
         {
         // This means that the source is given as a parameter to the effect
         return EVisualSrcInput2;
--- a/uiacceltk/hitchcock/coretoolkit/src/HuiFxEngine.cpp	Wed Sep 15 13:12:27 2010 +0300
+++ b/uiacceltk/hitchcock/coretoolkit/src/HuiFxEngine.cpp	Wed Oct 13 15:34:15 2010 +0300
@@ -661,12 +661,15 @@
     return EFalse;
     }
 
-void CHuiFxEngine::ClearCache()
+void CHuiFxEngine::ClearCache(TBool aOnlyCache)
     {
-    // Release cached render targets from effects
-    for (TInt j=0; j<iActiveEffects.Count();j++)
+    if (!aOnlyCache)
         {
-        iActiveEffects[j]->ReleaseCachedRenderTarget();
+        // Release cached render targets from effects
+        for (TInt j=0; j<iActiveEffects.Count();j++)
+            {
+            iActiveEffects[j]->ReleaseCachedRenderTarget();
+            }
         }
     
     if(IsCacheEmpty())
@@ -690,6 +693,13 @@
     ASSERT(iBuffersInCache == 0);    
     }
 
+void CHuiFxEngine::HandleOutOfGpuMemory()
+    {
+    // Effect might be rendering when this happens, so 
+	// release only cache items.
+	ClearCache(ETrue);
+    }
+
 TInt CHuiFxEngine::FindEffectGroup(TInt aGroup)
     {
     for (TInt i=0 ; i < iActiveEffectGroups.Count();i++)
--- a/uiacceltk/hitchcock/coretoolkit/src/HuiFxVisualLayer.cpp	Wed Sep 15 13:12:27 2010 +0300
+++ b/uiacceltk/hitchcock/coretoolkit/src/HuiFxVisualLayer.cpp	Wed Oct 13 15:34:15 2010 +0300
@@ -207,16 +207,9 @@
     RDebug::Print(_L("CHuiFxVisualLayer::~CHuiFxVisualLayer - 0x%x "), this);
 #endif
     
-    
     delete iExtBitmapFile;
     delete iParameterManager;
     iParameterManager = NULL;
-    
-    ReleaseExtTexture();
-    if(iVisual)
-        {
-        iVisual->SetExternalTexture(NULL);
-        }
     }
 
 EXPORT_C TBool CHuiFxVisualLayer::Changed() const
@@ -247,8 +240,6 @@
     {
     if(iRenderBuffer)
         {
-        ReleaseExtTexture();
-    
         aEngine.ReleaseRenderbuffer(iRenderBuffer);
         iRenderBuffer = NULL;
         }
@@ -280,8 +271,8 @@
         forceRefresh = ETrue;
         }
     
-    // Don't update render buffer if visual is not changed or screenshot/external image is used (except in force refresh case)
-    if(forceRefresh || (iVisualContentChanged && iSrcType==EVisualSrcVisual))
+    // don't update render buffer if visual is not changed or screenshot is used
+    if(forceRefresh || (iVisualContentChanged && iSrcType!=EVisualSrcInput1))
         {
         if(!iVisualContentOpaque)
             {
@@ -305,43 +296,11 @@
         aGc.PushClip();
         TRect bufferArea = TRect(TPoint(0,0), backbufferSize); 
         aGc.SetClip(bufferArea); // this does not transform bufferArea which is fine for us    
-        		
-		// If needed, create texture if there is a bimap source file set  				
-        if(iSrcType==EVisualSrcBitmap && iExtBitmapFile && !iExtTexture)
-            {
-            // Note: we are here only if also forceRefresh is true
-
-            CFbsBitmap *bm = new CFbsBitmap;
-			if (bm)
-				{
-                // Load the bitmap file and set it to the linked visual
-            	TInt err = bm->Load(*iExtBitmapFile, 0);
-            	if(!err && bm->Handle())
-                	{
-                    // Upload as a texture
-                    TRAP(err,
-                        iExtTexture = CHuiTexture::NewL();
-                        iExtTexture->UploadL(*bm);
-                        );
-                    if (!err)
-                        {
-                        iVisual->SetExternalTexture(iExtTexture);
-                        }
-                    else
-                        {
-                        delete iExtTexture;
-                        iExtTexture = NULL;
-                        iVisual->SetExternalTexture(NULL);
-                        }
-                	}
-                delete bm;
-				}
-            }
         
-        // Draw visual content to aGc
-        iVisual->EffectSetSource(iSrcType);
+        // Draw visual content to aTarget
+        iVisual->EffectSetSource(iSrcType==EVisualSrcInput1);
         iVisual->EffectDrawSelf( aGc, TargetRect() );
-        iVisual->EffectSetSource(EVisualSrcVisual); // set visual source to be default
+        iVisual->EffectSetSource(EFalse);
         
         // Restore original clipping
         aGc.PopClip();
@@ -543,15 +502,14 @@
 #endif    
     delete iExtBitmapFile;
     iExtBitmapFile = NULL;
-    
-    ReleaseExtTexture();
-    
     if ( aFilename.Length() == 0 )
         {
         // don't set an empty filename
         return;
         }
-    iExtBitmapFile = aFilename.AllocL();
+    iExtBitmapFile = HBufC::NewL( aFilename.Length() );
+    *iExtBitmapFile = aFilename;
+    //TODO: the bitmap from this filename should be loaded as texture to the visual.
     }
 void CHuiFxVisualLayer::FxmlVisualInputs(RArray<THuiFxVisualSrcType> &aArray)
     {
@@ -594,30 +552,3 @@
     iVisualContentOpaque = aOpaque;
     }
 	
-void CHuiFxVisualLayer::ReleaseExtTexture()
-    {
-    // Use iRenderBuffer context to make sure there is always active context when iExtTexture is deleted. 
-    // Otherwise the texture will not be freed and cause a memory leak.
-    //
-    // The object iRenderBuffer is created in first Draw() call (like iExtTexture), and deleted only in ReleaseAllCachedRenderTargets(). The latter 
-    // function calls ReleaseExtTexture() first. So we can be sure that iRenderBuffer is always set when iExtTexture is set.
-    // If this class is deleted without calling ReleaseAllCachedRenderTargets(), also destructor calls ReleaseExtTexture(). 
-    
-	ASSERT(!(iExtTexture && !iRenderBuffer));
-	
-	if (iExtTexture && iRenderBuffer)
-        {    
-        // just to make sure there is some context active when deleting the texture...
-        iRenderBuffer->BindAsRenderTarget(); 
-        
-        delete iExtTexture;
-        iExtTexture = NULL;
-        if(iVisual)
-            {
-            iVisual->SetExternalTexture(NULL);
-            }
-    
-        iRenderBuffer->UnbindAsRenderTarget();
-        }	
-    }
-
--- a/uiacceltk/hitchcock/coretoolkit/src/HuiImageVisual.cpp	Wed Sep 15 13:12:27 2010 +0300
+++ b/uiacceltk/hitchcock/coretoolkit/src/HuiImageVisual.cpp	Wed Oct 13 15:34:15 2010 +0300
@@ -301,11 +301,6 @@
     // Actual color of the image.
     aGc.SetPenAlpha(TInt(effectiveOpacity * 255));
     aGc.SetPenColor(iColor);
-    
-    // Render Alf image visuals always with high quality. Otherwise scaling etc. with ALF apis
-    // might produce low-quality
-    const THuiQuality oldQuality = aGc.Quality(); // store the original quality
-    aGc.SetQuality(EHuiQualityAccurate);
 
     // Apply special color mode.
     if(iColorMode == EColorDimmed)
@@ -391,8 +386,6 @@
                 }
             }
         }
-    
-    aGc.SetQuality(oldQuality); // restore quality
 
     // Disable special color modes.
     if(iColorMode == EColorDimmed)
--- a/uiacceltk/hitchcock/coretoolkit/src/HuiRosterImpl.cpp	Wed Sep 15 13:12:27 2010 +0300
+++ b/uiacceltk/hitchcock/coretoolkit/src/HuiRosterImpl.cpp	Wed Oct 13 15:34:15 2010 +0300
@@ -1874,25 +1874,14 @@
     {
     // not needed
     }
-void CHuiRosterImpl::EffectSetSource( THuiFxVisualSrcType aSource )
+void CHuiRosterImpl::EffectSetSource( TBool aIsInput1 )
     {
-    iEffectSourceType = aSource;
-    }
-
-THuiFxVisualSrcType CHuiRosterImpl::EffectGetSource() const
-    {
-    return iEffectSourceType;
+    iIsInput1 = aIsInput1;
     }
 
-void CHuiRosterImpl::SetExternalTexture(CHuiTexture* aTexture)
+TBool CHuiRosterImpl::EffectGetSource() const
     {
-    // Not used
-    }
-
-CHuiTexture* CHuiRosterImpl::ExternalTexture()
-    {
-    // Not used
-    return NULL;
+    return iIsInput1;
     }
 
 TBool CHuiRosterImpl::EffectReadyToDrawNextFrame() const
--- a/uiacceltk/hitchcock/coretoolkit/src/HuiVisual.cpp	Wed Sep 15 13:12:27 2010 +0300
+++ b/uiacceltk/hitchcock/coretoolkit/src/HuiVisual.cpp	Wed Oct 13 15:34:15 2010 +0300
@@ -60,8 +60,6 @@
         delete iDropShadow;
         delete iEffectParser;
         delete iEffect;
-        delete iEffectable; // Should be after deleting iEffect! 
-
         }
     
     // structs
@@ -85,45 +83,32 @@
     {
 public: // from MHuiEffectable
     CHuiEffectable(CHuiVisual *aVisual) : iVisual(aVisual) { }
-
     void EffectSetEffect(CHuiFxEffect* aEffect);
     TReal32 EffectOpacity() const;
     void EffectSetOpacityAdditive(TReal32 aOpacity, TBool aReplace);
     void EffectDrawSelf( CHuiGc &aGc, const TRect & aDisplayRect) const;
     THuiRealRect EffectDisplayRect() const __SOFTFP;
     void SetLoadingEffect(TBool aLoading);    
-    void EffectSetSource( THuiFxVisualSrcType aSource );
-    THuiFxVisualSrcType EffectGetSource() const;
-    void SetExternalTexture(CHuiTexture* aTexture);
-    CHuiTexture* ExternalTexture();
+    void EffectSetSource( TBool aIsInput1 );
+    TBool EffectGetSource() const;
     TBool EffectReadyToDrawNextFrame() const;
+
     
 private:
-    CHuiVisual *iVisual; // not owned
-    CHuiTexture* iExtTexture; // not owned
-    THuiFxVisualSrcType iSourceType;
+    CHuiVisual *iVisual;
+    TBool iIsInput1;
     };
 void CHuiEffectable::EffectSetEffect(CHuiFxEffect* aEffect)
     {
     iVisual->SetEffect(aEffect);
     }
-void CHuiEffectable::EffectSetSource( THuiFxVisualSrcType aSource )
+void CHuiEffectable::EffectSetSource( TBool aIsInput1 )
     {
-    iSourceType = aSource;
-    }
-THuiFxVisualSrcType CHuiEffectable::EffectGetSource() const
-    {
-    return iSourceType;
+    iIsInput1 = aIsInput1;
     }
-
-void CHuiEffectable::SetExternalTexture(CHuiTexture* aTexture)
+TBool CHuiEffectable::EffectGetSource() const
     {
-    iExtTexture = aTexture;
-    }
-
-CHuiTexture* CHuiEffectable::ExternalTexture()
-    {
-    return iExtTexture;
+    return iIsInput1;
     }
 
 TBool CHuiEffectable::EffectReadyToDrawNextFrame() const
@@ -207,9 +192,9 @@
     iVisualData->iFreezed = aEnabled;
     }
 TBool CHuiVisual::Freezed() const
-    {
+{
     return iVisualData->iFreezed;
-    }
+}
 
 EXPORT_C TBool CHuiVisual::EffectReadyToDrawNextFrame() const
     {
@@ -224,6 +209,7 @@
     return visual;
     }
 
+
 EXPORT_C CHuiVisual::CHuiVisual(MHuiVisualOwner& aOwner)
         : iOpacity(1.f),
           iEffectOpacity(1.f),
@@ -294,6 +280,7 @@
     delete iTransform;
     if (iVisualData)
         {
+        delete iVisualData->iEffectable;
         if (iVisualData->iStoredRenderBuffer)
             {
             iVisualData->iStoredRenderBuffer->UnInitialize();
@@ -2207,24 +2194,14 @@
         return EFalse;
     else
         {
-        THuiFxVisualSrcType sourceType = Effectable()->EffectGetSource(); 
-
-        if (sourceType == EVisualSrcVisual)
-            { // if this object has visual source, check the parent
-            CHuiLayout *layout = Layout();
-            if (layout)
-                {
-                return (Layout()->IsDelayedEffectSource()); 
-                }
-	        else
-	            {
-	            return EFalse;
-	            }
+        TBool b = Effectable()->EffectGetSource();
+        if (!b)
+            { // if not found from this object, try the parent
+            CHuiLayout *l = Layout();
+            if (l)
+                return Layout()->IsDelayedEffectSource();
             }
-        else
-            {
-            return ETrue;
-            }
+        return b;
         }
    }
 
--- a/uiacceltk/hitchcock/coretoolkit/src/huicanvaswshwgc.cpp	Wed Sep 15 13:12:27 2010 +0300
+++ b/uiacceltk/hitchcock/coretoolkit/src/huicanvaswshwgc.cpp	Wed Oct 13 15:34:15 2010 +0300
@@ -127,11 +127,11 @@
 	THuiCachedImageParams cachedImageParams;
     cachedImageParams.iBitmapHandle = aBitmapHandle;
     cachedImageParams.iGcParams = CachedGcParams();
-     
-    const CHuiCanvasGraphicImage* cachedImage = iVisual->Env().CanvasTextureCache().CreateCachedImageL(cachedImageParams,*iVisual);
 
     if (IsRenderingEnabled())
         {           
+        const CHuiCanvasGraphicImage* cachedImage = iVisual->Env().CanvasTextureCache().CreateCachedImageL(cachedImageParams,*iVisual);
+        
         const CHuiTexture* texture = cachedImage->Texture();
         if (texture)
             {
@@ -145,6 +145,13 @@
             iCanvasGc->SetDrawMode(oldDrawMode);
             }
         }
+    else
+        {
+        if ( IsCacheUpdateNeeded() )
+            {
+            iVisual->Env().CanvasTextureCache().CreateCachedImageL(cachedImageParams,*iVisual);
+            }
+        }
 	}
 
 
@@ -156,10 +163,10 @@
     cachedImageParams.iBitmapHandle = aBitmapHandle;
     cachedImageParams.iGcParams = CachedGcParams();
      
-    const CHuiCanvasGraphicImage* cachedImage = iVisual->Env().CanvasTextureCache().CreateCachedImageL(cachedImageParams,*iVisual);
-
     if (IsRenderingEnabled())
         {           
+        const CHuiCanvasGraphicImage* cachedImage = iVisual->Env().CanvasTextureCache().CreateCachedImageL(cachedImageParams,*iVisual);
+        
         const CHuiTexture* texture = cachedImage->Texture();
         if (texture)
             {
@@ -174,6 +181,13 @@
             iCanvasGc->SetDrawMode(oldDrawMode);
             }        
         }
+	else
+	    {
+        if ( IsCacheUpdateNeeded() )
+            {
+            iVisual->Env().CanvasTextureCache().CreateCachedImageL(cachedImageParams,*iVisual);
+            }	        
+	    }
 	}
 
 
@@ -186,11 +200,11 @@
     cachedImageParams.iInvertedMask = aInvertMask;
     cachedImageParams.iGcParams = CachedGcParams();
      
-     
-    const CHuiCanvasGraphicImage* cachedImage = iVisual->Env().CanvasTextureCache().CreateCachedImageL(cachedImageParams,*iVisual);
 
     if (IsRenderingEnabled())
         {           
+        const CHuiCanvasGraphicImage* cachedImage = iVisual->Env().CanvasTextureCache().CreateCachedImageL(cachedImageParams,*iVisual);
+        
         const CHuiTexture* texture = cachedImage->Texture();
         if (texture)
             {
@@ -201,6 +215,13 @@
             iCanvasGc->DrawImage(*texture, destinationRect, aRect, CHuiGc::EStretchNone);
             }
         }
+	else
+	    {
+	    if (IsCacheUpdateNeeded())
+	        {
+	        iVisual->Env().CanvasTextureCache().CreateCachedImageL(cachedImageParams,*iVisual);
+	        }
+	    }
 	}
 
 
@@ -209,27 +230,26 @@
 	THuiCachedCombinedImageParams cachedCombinedImageParams;	    
     THuiCachedGcParams gcParams = CachedGcParams();          
     TSize imageSize = aDestinationRect.Size();
-    
+
     // Must convert points relative to the image itself
-    RArray<THuiCachedCombinedImageParams> convertedBlits;
+    RArray<THuiCachedCombinedImageParams> convertedBlits;   
+    
     for (TInt i=0; i<aBlits.Count();i++)
         {
         THuiCachedCombinedImageParams convertedParams;
         convertedParams = aBlits[i];
         convertedParams.iCombinedBitmapPoint -= aDestinationRect.iTl;
         convertedBlits.Append(convertedParams);
-        }    
-    
-    const CHuiCanvasGraphicImage* cachedImage = iVisual->Env().CanvasTextureCache().CreateCombinedCachedImageL(
-        convertedBlits, 
-        gcParams,
-        imageSize, 
-        *iVisual);
-
-    convertedBlits.Close();
+        }       
 
     if (IsRenderingEnabled())
-        {           
+        {    
+        const CHuiCanvasGraphicImage* cachedImage = iVisual->Env().CanvasTextureCache().CreateCombinedCachedImageL(
+            convertedBlits, 
+            gcParams,
+            imageSize, 
+            *iVisual);
+       
         const CHuiTexture* texture = cachedImage->Texture();        
         if (texture)
             {
@@ -242,6 +262,19 @@
             iCanvasGc->DrawImage(*texture, destinationRect, TRect(TPoint(0,0), texture->Size()),  CHuiGc::EStretchNone);
             }
         }
+    else
+        {
+        if (IsCacheUpdateNeeded())
+            {
+            iVisual->Env().CanvasTextureCache().CreateCombinedCachedImageL(
+                convertedBlits, 
+                gcParams,
+                imageSize, 
+                *iVisual);
+            }
+        }
+	
+	convertedBlits.Close();
 	}
 
 
@@ -253,10 +286,10 @@
     cachedImageParams.iMaskOriginPoint = aPoint2;
     cachedImageParams.iGcParams = CachedGcParams();
 
-    const CHuiCanvasGraphicImage* cachedImage = iVisual->Env().CanvasTextureCache().CreateCachedImageL(cachedImageParams,*iVisual);
-
     if (IsRenderingEnabled())
         {           
+        const CHuiCanvasGraphicImage* cachedImage = iVisual->Env().CanvasTextureCache().CreateCachedImageL(cachedImageParams,*iVisual);
+        
         const CHuiTexture* texture = cachedImage->Texture();
         if (texture)
             {
@@ -267,6 +300,13 @@
             iCanvasGc->DrawImage(*texture, destinationRect, aRect, CHuiGc::EStretchNone);
             }             
         }
+    else
+        {
+        if (IsCacheUpdateNeeded())
+            {
+            iVisual->Env().CanvasTextureCache().CreateCachedImageL(cachedImageParams,*iVisual);
+            }
+        }
 	}
 
 void CHuiCanvasWsHwGc::WsResetClippingRegionL()
@@ -431,9 +471,9 @@
     cachedImageParams.iBitmapHandle = aBitmapHandle;
     cachedImageParams.iGcParams = CachedGcParams();
 
-    const CHuiCanvasGraphicImage* cachedImage = iVisual->Env().CanvasTextureCache().CreateCachedImageL(cachedImageParams,*iVisual);
     if (IsRenderingEnabled())
         {           
+        const CHuiCanvasGraphicImage* cachedImage = iVisual->Env().CanvasTextureCache().CreateCachedImageL(cachedImageParams,*iVisual);
         const CHuiTexture* texture = cachedImage->Texture();
         if (texture)
             {
@@ -445,6 +485,13 @@
             iCanvasGc->DrawImage(*texture, destinationRect, TRect(TPoint(0,0), texture->Size()), CHuiGc::EStretchFull); 
             }        	
         }
+    else
+        {
+        if (IsCacheUpdateNeeded())
+            {
+            iVisual->Env().CanvasTextureCache().CreateCachedImageL(cachedImageParams,*iVisual);
+            }
+        }
 	}
 
 void CHuiCanvasWsHwGc::WsDrawBitmap2L(TInt aBitmapHandle, TRect aRect1, TRect aRect2)
@@ -453,10 +500,10 @@
     cachedImageParams.iBitmapHandle = aBitmapHandle;
     cachedImageParams.iGcParams = CachedGcParams();
 
-    const CHuiCanvasGraphicImage* cachedImage = iVisual->Env().CanvasTextureCache().CreateCachedImageL(cachedImageParams,*iVisual);
-
     if (IsRenderingEnabled())
         {           
+        const CHuiCanvasGraphicImage* cachedImage = iVisual->Env().CanvasTextureCache().CreateCachedImageL(cachedImageParams,*iVisual);
+        
         const CHuiTexture* texture = cachedImage->Texture();
         if (texture)
             {
@@ -467,6 +514,13 @@
             iCanvasGc->DrawImage(*texture, destinationRect, aRect2, CHuiGc::EStretchFull); 
             }        
         }
+    else
+        {
+        if (IsCacheUpdateNeeded())
+            {
+            iVisual->Env().CanvasTextureCache().CreateCachedImageL(cachedImageParams,*iVisual);
+            }
+        }
 	}
 
 void CHuiCanvasWsHwGc::WsDrawBitmap3L(TInt aBitmapHandle, TPoint aPoint)
@@ -475,10 +529,10 @@
     cachedImageParams.iBitmapHandle = aBitmapHandle;
     cachedImageParams.iGcParams = CachedGcParams();
 
-    const CHuiCanvasGraphicImage* cachedImage = iVisual->Env().CanvasTextureCache().CreateCachedImageL(cachedImageParams,*iVisual);
-
     if (IsRenderingEnabled())
         {           
+        const CHuiCanvasGraphicImage* cachedImage = iVisual->Env().CanvasTextureCache().CreateCachedImageL(cachedImageParams,*iVisual);
+        
         const CHuiTexture* texture = cachedImage->Texture();
         if (texture)
             {
@@ -490,6 +544,13 @@
             iCanvasGc->DrawImage(*texture, destinationRect, TRect(TPoint(0,0), texture->Size()), CHuiGc::EStretchNone);
             }        
         }
+	else
+	    {
+	    if (IsCacheUpdateNeeded())
+	        {
+	        iVisual->Env().CanvasTextureCache().CreateCachedImageL(cachedImageParams,*iVisual);
+	        }
+	    }
 	}
 
 void CHuiCanvasWsHwGc::WsDrawBitmapMaskedL(TInt aBitmapHandle, TInt aMaskHandle, TInt aInvertMask, TRect& aRect1, TRect& aRect2)
@@ -499,11 +560,11 @@
     cachedImageParams.iMaskHandle = aMaskHandle;
     cachedImageParams.iInvertedMask = aInvertMask;
     cachedImageParams.iGcParams = CachedGcParams();
-    
-    const CHuiCanvasGraphicImage* cachedImage = iVisual->Env().CanvasTextureCache().CreateCachedImageL(cachedImageParams,*iVisual);
-
+        
     if (IsRenderingEnabled())
         {           
+        const CHuiCanvasGraphicImage* cachedImage = iVisual->Env().CanvasTextureCache().CreateCachedImageL(cachedImageParams,*iVisual);
+        
         const CHuiTexture* texture = cachedImage->Texture();
         if (texture)
             {
@@ -514,6 +575,13 @@
             iCanvasGc->DrawImage(*texture, destinationRect, aRect2, CHuiGc::EStretchFull);
             }        
         }
+    else
+        {
+        if (IsCacheUpdateNeeded())
+            {
+            iVisual->Env().CanvasTextureCache().CreateCachedImageL(cachedImageParams,*iVisual);
+            }
+        }
 	}
 
 void CHuiCanvasWsHwGc::WsDrawRoundRectL(TPoint aPoint, TRect& aRect)
@@ -972,10 +1040,10 @@
     cachedtextParams.iTextParams = aTextParameters;
     cachedtextParams.iGcParams = CachedGcParams();
 
-    const CHuiCanvasTextImage* cachedImage = iVisual->Env().CanvasTextureCache().CreateCachedTextL(cachedtextParams,*iVisual); 
-
     if (IsRenderingEnabled())
         {           
+        const CHuiCanvasTextImage* cachedImage = iVisual->Env().CanvasTextureCache().CreateCachedTextL(cachedtextParams,*iVisual); 
+        
         const CHuiTexture* texture = cachedImage->Texture();
         if (texture)
             {
@@ -1004,6 +1072,13 @@
                 }
             }        
         }
+	else
+	    {
+	    if (IsCacheUpdateNeeded())
+	        {
+	        iVisual->Env().CanvasTextureCache().CreateCachedTextL(cachedtextParams,*iVisual); 
+	        }
+	    }
 	}
 
 void CHuiCanvasWsHwGc::WsDrawText2L(TPtr& aTextValue, TPoint& aPoint,THuiCanvasTextParameters& aTextParameters)
@@ -1014,10 +1089,11 @@
     cachedtextParams.iTextParams = aTextParameters;
     cachedtextParams.iGcParams = CachedGcParams();
 
-    const CHuiCanvasTextImage* cachedImage = iVisual->Env().CanvasTextureCache().CreateCachedTextL(cachedtextParams,*iVisual); 
 
     if (IsRenderingEnabled())
         {           
+        const CHuiCanvasTextImage* cachedImage = iVisual->Env().CanvasTextureCache().CreateCachedTextL(cachedtextParams,*iVisual); 
+        
         const CHuiTexture* texture = cachedImage->Texture();
         if (texture)
             {
@@ -1047,6 +1123,13 @@
                 }
             }
         }
+    else
+        {
+        if (IsCacheUpdateNeeded())
+            {
+            iVisual->Env().CanvasTextureCache().CreateCachedTextL(cachedtextParams,*iVisual); 
+            }
+        }
 	}
 
 void CHuiCanvasWsHwGc::WsDrawText3L(TPtr& aTextValue, TRect& aRect, THuiCanvasTextParameters& aTextParameters)
@@ -1058,10 +1141,11 @@
     cachedtextParams.iTextBoxMaxSize = aRect.Size();
     cachedtextParams.iGcParams = CachedGcParams();
 
-    const CHuiCanvasTextImage* cachedImage = iVisual->Env().CanvasTextureCache().CreateCachedTextL(cachedtextParams,*iVisual); 
 
     if (IsRenderingEnabled())
         {           
+        const CHuiCanvasTextImage* cachedImage = iVisual->Env().CanvasTextureCache().CreateCachedTextL(cachedtextParams,*iVisual); 
+        
         const CHuiTexture* texture = cachedImage->Texture();
         if (texture)
             {
@@ -1092,6 +1176,13 @@
                 }
             }
         }
+    else
+        {
+        if (IsCacheUpdateNeeded())
+            {
+            iVisual->Env().CanvasTextureCache().CreateCachedTextL(cachedtextParams,*iVisual); 
+            }
+        }
 	}
 
 
@@ -1107,10 +1198,10 @@
     cachedtextParams.iMargin = aTextMargin;
     cachedtextParams.iGcParams = CachedGcParams();
     
-    const CHuiCanvasTextImage* cachedImage = iVisual->Env().CanvasTextureCache().CreateCachedTextL(cachedtextParams,*iVisual); 
-
     if (IsRenderingEnabled())
         {           
+        const CHuiCanvasTextImage* cachedImage = iVisual->Env().CanvasTextureCache().CreateCachedTextL(cachedtextParams,*iVisual); 
+        
         const CHuiTexture* texture = cachedImage->Texture();
         if (texture)
             {
@@ -1141,6 +1232,13 @@
                 }
             }    
         }
+    else
+        {
+        if (IsCacheUpdateNeeded())
+            {
+            iVisual->Env().CanvasTextureCache().CreateCachedTextL(cachedtextParams,*iVisual); 
+            }
+        }
     }
 
 void CHuiCanvasWsHwGc::WsDrawText5L( TPtr& aTextValue, TRect& aRect, TInt aBaselineOffset, TInt aTextAlign, TInt aTextMargin,TInt aTextWidth, THuiCanvasTextParameters& aTextParameters)
@@ -1156,10 +1254,11 @@
     cachedtextParams.iTextWidth = aTextWidth;
     cachedtextParams.iGcParams = CachedGcParams();
     
-    const CHuiCanvasTextImage* cachedImage = iVisual->Env().CanvasTextureCache().CreateCachedTextL(cachedtextParams,*iVisual); 
-
+    
     if (IsRenderingEnabled())
         {           
+        const CHuiCanvasTextImage* cachedImage = iVisual->Env().CanvasTextureCache().CreateCachedTextL(cachedtextParams,*iVisual); 
+        
         const CHuiTexture* texture = cachedImage->Texture();
         if (texture)
             {
@@ -1190,6 +1289,13 @@
                 }
             }    
         }
+    else
+        {
+        if (IsCacheUpdateNeeded())
+            {
+            iVisual->Env().CanvasTextureCache().CreateCachedTextL(cachedtextParams,*iVisual); 
+            }
+        }
 	}
 	
 void CHuiCanvasWsHwGc::WsDrawTextVertical1L(TPtr& aTextValue, TInt aTextUp, THuiCanvasTextParameters& aTextParameters)	
@@ -1203,11 +1309,12 @@
     cachedtextParams.iTextParams = aTextParameters;
     cachedtextParams.iAngle = angle;
     cachedtextParams.iGcParams = CachedGcParams();
-
-    const CHuiCanvasTextImage* cachedImage = iVisual->Env().CanvasTextureCache().CreateCachedTextL(cachedtextParams,*iVisual); 
+ 
 
     if (IsRenderingEnabled())
         {           
+        const CHuiCanvasTextImage* cachedImage = iVisual->Env().CanvasTextureCache().CreateCachedTextL(cachedtextParams,*iVisual);
+        
         const CHuiTexture* texture = cachedImage->Texture();
         if (texture)
             {
@@ -1237,6 +1344,13 @@
                 }
             }    
         }
+    else
+        {
+        if (IsCacheUpdateNeeded())
+            {
+            iVisual->Env().CanvasTextureCache().CreateCachedTextL(cachedtextParams,*iVisual);
+            }
+        }
     }
 
 void CHuiCanvasWsHwGc::WsDrawTextVertical2L(TPtr& aTextValue, TInt aTextUp,TPoint& aPoint, THuiCanvasTextParameters& aTextParameters)	
@@ -1249,11 +1363,12 @@
     cachedtextParams.iTextParams = aTextParameters;
     cachedtextParams.iAngle = angle;
     cachedtextParams.iGcParams = CachedGcParams();
-	
-    const CHuiCanvasTextImage* cachedImage = iVisual->Env().CanvasTextureCache().CreateCachedTextL(cachedtextParams,*iVisual); 
+	 
 
     if (IsRenderingEnabled())
         {           
+        const CHuiCanvasTextImage* cachedImage = iVisual->Env().CanvasTextureCache().CreateCachedTextL(cachedtextParams,*iVisual);
+        
         const CHuiTexture* texture = cachedImage->Texture();
         if (texture)
             {
@@ -1283,6 +1398,13 @@
                 }
             }
         }
+    else
+        {
+        if (IsCacheUpdateNeeded())
+            {
+            iVisual->Env().CanvasTextureCache().CreateCachedTextL(cachedtextParams,*iVisual);
+            }
+        }
     }
 
 void CHuiCanvasWsHwGc::WsDrawTextVertical3L(TPtr& aTextValue, TInt aTextUp, TRect& aRect, THuiCanvasTextParameters& aTextParameters)	
@@ -1297,10 +1419,11 @@
     cachedtextParams.iAngle = angle;
     cachedtextParams.iGcParams = CachedGcParams();
 
-    const CHuiCanvasTextImage* cachedImage = iVisual->Env().CanvasTextureCache().CreateCachedTextL(cachedtextParams,*iVisual); 
 
     if (IsRenderingEnabled())
         {           
+        const CHuiCanvasTextImage* cachedImage = iVisual->Env().CanvasTextureCache().CreateCachedTextL(cachedtextParams,*iVisual); 
+        
         const CHuiTexture* texture = cachedImage->Texture();
         if (texture)
             {
@@ -1331,13 +1454,19 @@
                 }
             }
         }
+    else
+        {
+        if (IsCacheUpdateNeeded())
+            {
+            iVisual->Env().CanvasTextureCache().CreateCachedTextL(cachedtextParams,*iVisual); 
+            }
+        }
     }
 
 void CHuiCanvasWsHwGc::WsDrawTextVertical4L(TPtr& aTextValue, TRect& aRect, TInt aBaselineOffset, TInt aTextUp, TInt aTextAlign, TInt aTextMargin,THuiCanvasTextParameters& aTextParameters)
     {
     TInt angle = aTextUp ? -90 : 90;
 
-
     THuiCachedTextParams cachedtextParams;
     cachedtextParams.iFindTextPtr = &aTextValue;
     cachedtextParams.iFontHandle = iWsCurrentFont;
@@ -1349,10 +1478,11 @@
     cachedtextParams.iMargin = aTextMargin;
     cachedtextParams.iGcParams = CachedGcParams();
 
-    const CHuiCanvasTextImage* cachedImage = iVisual->Env().CanvasTextureCache().CreateCachedTextL(cachedtextParams,*iVisual); 
 
     if (IsRenderingEnabled())
         {           
+        const CHuiCanvasTextImage* cachedImage = iVisual->Env().CanvasTextureCache().CreateCachedTextL(cachedtextParams,*iVisual); 
+
         const CHuiTexture* texture = cachedImage->Texture();
         if (texture)
             {
@@ -1383,6 +1513,13 @@
                 }
             }
         }
+    else
+        {
+        if (IsCacheUpdateNeeded())
+            {
+            iVisual->Env().CanvasTextureCache().CreateCachedTextL(cachedtextParams,*iVisual); 
+            }
+        }
     }
 
 void CHuiCanvasWsHwGc::WsDrawTextVertical5L(TPtr& aTextValue, TRect& aRect, TInt aBaselineOffset, TInt aTextUp, TInt aTextAlign, TInt aTextMargin, TInt aTextWidth, THuiCanvasTextParameters& aTextParameters)
@@ -1401,10 +1538,11 @@
     cachedtextParams.iMargin = aTextMargin;
     cachedtextParams.iGcParams = CachedGcParams();
 
-    const CHuiCanvasTextImage* cachedImage = iVisual->Env().CanvasTextureCache().CreateCachedTextL(cachedtextParams,*iVisual); 
 
     if (IsRenderingEnabled())
         {           
+        const CHuiCanvasTextImage* cachedImage = iVisual->Env().CanvasTextureCache().CreateCachedTextL(cachedtextParams,*iVisual); 
+        
         const CHuiTexture* texture = cachedImage->Texture();
         if (texture)
             {
@@ -1435,6 +1573,13 @@
                 }
             }
         }
+    else
+        {
+        if (IsCacheUpdateNeeded())
+            {
+            iVisual->Env().CanvasTextureCache().CreateCachedTextL(cachedtextParams,*iVisual); 
+            }
+        }
     }
 
 void CHuiCanvasWsHwGc::WsMoveToL( TPoint& aPoint)
@@ -2309,3 +2454,14 @@
     iCanvasGc->SetPenWidth(iOldPenWidth);
     iCanvasGc->SetPolygonDrawMode(iOldPolygonDrawMode);
     }
+
+TBool CHuiCanvasWsHwGc::IsCacheUpdateNeeded() const
+    {
+    TBool result = ETrue;
+    if ( iVisual )
+        {
+        result = IsRenderingEnabled() || iVisual->KeepCache();
+        }
+    return result;
+    }
+
--- a/uiacceltk/hitchcock/coretoolkit/src/huigifanimationtexture.cpp	Wed Sep 15 13:12:27 2010 +0300
+++ b/uiacceltk/hitchcock/coretoolkit/src/huigifanimationtexture.cpp	Wed Oct 13 15:34:15 2010 +0300
@@ -56,13 +56,6 @@
         {
         iTexture->SetTextureChanged(ETrue);        
         }
-    else
-        {
-        
-        iAnimationState = SetFlag(TInt(iAnimationState), TInt(EInitializing));
-            iTexture1 = &iManager.LoadTextureL(
-            *iFilename,EHuiTextureUploadFlagDefault, iTextureId1, 0);    
-        }
     CHuiStatic::ContinueRefresh();
     }
 
@@ -258,23 +251,6 @@
    	iAnimationState = SetFlag(TInt(iAnimationState), TInt(EEnabled));	
     }
 
-EXPORT_C void CHuiGifAnimationTexture::DeleteAnimatedTexture()
-    {
-    
-    if (iTexture1)
-        {
-        delete iTexture1;
-        iTexture1 = 0;
-        }
-    if (iTexture2)
-        {
-        delete iTexture2;
-        iTexture2 = 0;
-        }    
-    iTexture = 0; 
-    iFrameCount = 0;
-    }
-
 EXPORT_C CHuiGifAnimationTexture::~CHuiGifAnimationTexture()
     {
     if ( iAnimatedTextureGroupId )
--- a/uiacceltk/hitchcock/goommonitor/data/goomconfig.xml	Wed Sep 15 13:12:27 2010 +0300
+++ b/uiacceltk/hitchcock/goommonitor/data/goomconfig.xml	Wed Oct 13 15:34:15 2010 +0300
@@ -68,7 +68,9 @@
 		close_app uid="101FD693" priority="80" sync_mode="check" close_timeout="3000" wait_after_close="5000"
 -->
 	<close_app uid="AF00ABBA" priority="NEVER_CLOSE" sync_mode="check"></close_app> <!--QtLauncher-->
-	
+	<close_app uid="20016BF0" priority="1"  sync_mode="check"></close_app> <!--Task Swapper-->
+	<close_app uid="2000FDC3" priority="1"  sync_mode="check"></close_app> <!--ScreenSaver-->
+
 	</app_close_settings>
 	
 <!--	The priority of executing each system plugin is defined here.
--- a/uiacceltk/hitchcock/goommonitor/inc/goommemorymonitor.h	Wed Sep 15 13:12:27 2010 +0300
+++ b/uiacceltk/hitchcock/goommonitor/inc/goommemorymonitor.h	Wed Oct 13 15:34:15 2010 +0300
@@ -142,6 +142,17 @@
     
     void SwitchMemMode(TGOomMemMode aMemMode);
     
+    inline TGOomTrigger GetTrigger()
+        {
+        return iTrigger;
+        }
+    
+    inline TInt GetLowThreshold()
+        {
+        return iLowThreshold;
+        }
+    
+    
 private:
     CMemoryMonitor();
     void ConstructL();
--- a/uiacceltk/hitchcock/goommonitor/src/goomactionlist.cpp	Wed Sep 15 13:12:27 2010 +0300
+++ b/uiacceltk/hitchcock/goommonitor/src/goomactionlist.cpp	Wed Oct 13 15:34:15 2010 +0300
@@ -232,6 +232,14 @@
     
     TInt oldcount = iActionRefs.Count();
     
+    TInt32 foregroundUid = iMonitor.ForegroundAppUid();
+    CGOomCloseAppConfig* fgAppConfig = aConfig.GetApplicationConfig(foregroundUid).GetAppCloseConfig();
+    if(!fgAppConfig)
+        {
+        TRACES1("Config for foreground app %x not found. Using default priority", foregroundUid);
+        fgAppConfig = aConfig.GetApplicationConfig(KGOomDefaultAppId).GetAppCloseConfig();
+        }
+    
     if (aWindowGroupList.Count())
             {
             // Go through each item in the wglist, create an app close action for this application
@@ -304,19 +312,26 @@
                 if (appCloseConfig)
                     {
                     TUint priority = appCloseConfig->CalculateCloseAppPriority(aWindowGroupList, wgIndex);
-                    TInt wgId = aWindowGroupList.WgId(wgIndex).iId;
-                    TGOomSyncMode syncMode = appCloseConfig->iSyncMode;
-                    TInt ramEstimate = appCloseConfig->iRamEstimate;
-                    TActionRef ref = TActionRef(TActionRef::EAppClose, priority, syncMode, ramEstimate, wgId, wgIndex, appCloseConfig->iCloseTimeout, appCloseConfig->iWaitAfterClose);
-    
-                    //AppClose Actions should always have a unique prioirity determined by the application's z order.
-                    TInt err = iActionRefs.InsertInOrder(ref, ComparePriorities);
-                    if ((err != KErrNone) && (err != KErrAlreadyExists))
+                    
+                    TRACES2("Forground app %x priority %d", foregroundUid, fgAppConfig->iDefaultPriority); 
+                    TRACES2("victim app %x priority %d", appId, priority);
+                    
+                    if(priority <= fgAppConfig->iDefaultPriority) //check if priority of app about to be killed is not higher than that of app about to start 
                         {
-                        TRACES3("BuildActionListL: Adding app to action list, Uid = %x, wgId = %d, err = %d", appId, wgId, err);
-                        User::Leave(err);
+                        TInt wgId = aWindowGroupList.WgId(wgIndex).iId;
+                        TGOomSyncMode syncMode = appCloseConfig->iSyncMode;
+                        TInt ramEstimate = appCloseConfig->iRamEstimate;
+                        TActionRef ref = TActionRef(TActionRef::EAppClose, priority, syncMode, ramEstimate, wgId, wgIndex, appCloseConfig->iCloseTimeout, appCloseConfig->iWaitAfterClose);
+        
+                        //AppClose Actions should always have a unique prioirity determined by the application's z order.
+                        TInt err = iActionRefs.InsertInOrder(ref, ComparePriorities);
+                        if ((err != KErrNone) && (err != KErrAlreadyExists))
+                            {
+                            TRACES3("BuildActionListL: Adding app to action list, Uid = %x, wgId = %d, err = %d", appId, wgId, err);
+                            User::Leave(err);
+                            }
+                        TRACES3("BuildActionListL: Adding app to action list, Uid = %x, wgId = %d, wgIndex = %d", appId, wgId, wgIndex);
                         }
-                    TRACES3("BuildActionListL: Adding app to action list, Uid = %x, wgId = %d, wgIndex = %d", appId, wgId, wgIndex);
                     }
     
                 wgIndex++;
@@ -461,6 +476,12 @@
         // No usable memory freeing action has been found, so we give up
         TInt freeMemory;
 
+        if(iMonitor.GetTrigger() == CMemoryMonitor::EGOomTriggerThresholdCrossed)
+            {
+            if(freeMemory > iMonitor.GetLowThreshold())
+                iOptionalTried = ETrue;
+            }
+        
         if ( !FreeMemoryAboveTarget(freeMemory) && !iTryOptional && !iOptionalTried && freeMemory < 25*1024*1024 ) // magic, should read this from config
             { 
             iTryOptional = ETrue;
@@ -726,6 +747,12 @@
 	            {
                 iRunningKillAppActions = EFalse;
 
+                if(iMonitor.GetTrigger() == CMemoryMonitor::EGOomTriggerThresholdCrossed)
+                    {
+                    if(freeMemory > iMonitor.GetLowThreshold())
+                        iOptionalTried = ETrue;
+                    }
+                
                 if (!iTryOptional && !iOptionalTried && freeMemory < 25*1024*1024 ) // magic, should read this from config
                     { 
                     iTryOptional = ETrue;
--- a/uiacceltk/hitchcock/goommonitor/src/goommemorymonitor.cpp	Wed Sep 15 13:12:27 2010 +0300
+++ b/uiacceltk/hitchcock/goommonitor/src/goommemorymonitor.cpp	Wed Oct 13 15:34:15 2010 +0300
@@ -828,8 +828,8 @@
         case EGOomTriggerRequestMemory:
             {
             //start timer
-            //cancel timer if end critical allocations request -TODO
-            //end critical allocations when timer expires -TODO
+            //cancel timer if end critical allocations request 
+            //end critical allocations when timer expires 
             if ( iSynchTimer && //exists
                  !iSynchTimer->IsActive() ) // keep it simple
                 {        
@@ -851,8 +851,9 @@
         iClientsRequestingMemory.Reset();
         TRACES("SynchroniseMemoryState calling MemoryGOOD");
         iGOomActionList->MemoryGood();
+        iMemAllocationsGrowing->Continue();
         }
-    else if(current < iLowThreshold)
+    else if(current < iLowThreshold && iMemMode == EGOomLowMemMode)
         {
         iMemAllocationsGrowing->Stop();
         iMemAllocationsGoingDown->Continue();
--- a/uiacceltk/hitchcock/goommonitor/src/goommonitorsession.cpp	Wed Sep 15 13:12:27 2010 +0300
+++ b/uiacceltk/hitchcock/goommonitor/src/goommonitorsession.cpp	Wed Oct 13 15:34:15 2010 +0300
@@ -56,7 +56,7 @@
         TIpcArgs p(aBytesRequested,0);
         return SendReceive(EGOomMonitorRequestFreeMemory, p);
         }
-    return KErrNone;    
+    return KErrCouldNotConnect;    
     }
 
 EXPORT_C void RGOomMonitorSession::MemoryAllocationsComplete()
@@ -83,7 +83,7 @@
 
         return ret;
         }
-    return KErrNone;
+    return KErrCouldNotConnect;
     }    
 
 EXPORT_C void RGOomMonitorSession::RequestOptionalRam(TInt aBytesRequested, TInt aMinimumBytesNeeded, TInt aPluginId, TRequestStatus& aStatus)
--- a/uiacceltk/hitchcock/group/core_exports.inc	Wed Sep 15 13:12:27 2010 +0300
+++ b/uiacceltk/hitchcock/group/core_exports.inc	Wed Oct 13 15:34:15 2010 +0300
@@ -3,7 +3,7 @@
 *  Name        : core_exports.inc
 *  Part of     : Alfred UI Toolkit
 *  Description : Exported header files.
-*  Version     : %version: tr1sido#8.1.39 %
+*  Version     : %version: tr1sido#8.1.38 %
 *
 *  Copyright © 2006-2007 Nokia.  All rights reserved.
 *  This material, including documentation and any related computer
@@ -79,7 +79,6 @@
 ../coretoolkit/data/informationnote_disappear.fxml /epoc32/release/winscw/urel/z/resource/effects/informationnote_disappear.fxml
 ../coretoolkit/data/layoutswitch_appear.fxml /epoc32/release/winscw/urel/z/resource/effects/layoutswitch_appear.fxml
 ../coretoolkit/data/layoutswitch_disappear.fxml /epoc32/release/winscw/urel/z/resource/effects/layoutswitch_disappear.fxml
-../coretoolkit/data/longappstart_img.mbm /epoc32/release/winscw/urel/z/resource/effects/longappstart_img.mbm
 ../coretoolkit/data/musicplayer_popup_appear.fxml /epoc32/release/winscw/urel/z/resource/effects/musicplayer_popup_appear.fxml
 ../coretoolkit/data/musicplayer_popup_disappear.fxml /epoc32/release/winscw/urel/z/resource/effects/musicplayer_popup_disappear.fxml
 ../coretoolkit/data/musicplayer_viewswitch_in.fxml /epoc32/release/winscw/urel/z/resource/effects/musicplayer_viewswitch_in.fxml
@@ -127,7 +126,6 @@
 ../coretoolkit/data/warningnote_appear.fxml /epoc32/release/winscw/urel/z/resource/effects/warningnote_appear.fxml
 ../coretoolkit/data/warningnote_disappear.fxml /epoc32/release/winscw/urel/z/resource/effects/warningnote_disappear.fxml
 
-
 // for EMULATOR UDEB
 ../coretoolkit/data/activeidle_viewswitch_add_page.fxml /epoc32/release/winscw/udeb/z/resource/effects/activeidle_viewswitch_add_page.fxml
 ../coretoolkit/data/activeidle_viewswitch_bg_anim_to_image.fxml /epoc32/release/winscw/udeb/z/resource/effects/activeidle_viewswitch_bg_anim_to_image.fxml
@@ -176,7 +174,6 @@
 ../coretoolkit/data/informationnote_disappear.fxml /epoc32/release/winscw/udeb/z/resource/effects/informationnote_disappear.fxml
 ../coretoolkit/data/layoutswitch_appear.fxml /epoc32/release/winscw/udeb/z/resource/effects/layoutswitch_appear.fxml
 ../coretoolkit/data/layoutswitch_disappear.fxml /epoc32/release/winscw/udeb/z/resource/effects/layoutswitch_disappear.fxml
-../coretoolkit/data/longappstart_img.mbm /epoc32/release/winscw/udeb/z/resource/effects/longappstart_img.mbm
 ../coretoolkit/data/musicplayer_popup_appear.fxml /epoc32/release/winscw/udeb/z/resource/effects/musicplayer_popup_appear.fxml
 ../coretoolkit/data/musicplayer_popup_disappear.fxml /epoc32/release/winscw/udeb/z/resource/effects/musicplayer_popup_disappear.fxml
 ../coretoolkit/data/musicplayer_viewswitch_in.fxml /epoc32/release/winscw/udeb/z/resource/effects/musicplayer_viewswitch_in.fxml
@@ -224,7 +221,6 @@
 ../coretoolkit/data/warningnote_appear.fxml /epoc32/release/winscw/udeb/z/resource/effects/warningnote_appear.fxml
 ../coretoolkit/data/warningnote_disappear.fxml /epoc32/release/winscw/udeb/z/resource/effects/warningnote_disappear.fxml
 
-
 // For ROM
 ../coretoolkit/data/activeidle_viewswitch_add_page.fxml /epoc32/data/z/resource/effects/activeidle_viewswitch_add_page.fxml
 ../coretoolkit/data/activeidle_viewswitch_bg_anim_to_image.fxml /epoc32/data/z/resource/effects/activeidle_viewswitch_bg_anim_to_image.fxml
@@ -273,7 +269,6 @@
 ../coretoolkit/data/informationnote_disappear.fxml /epoc32/data/z/resource/effects/informationnote_disappear.fxml
 ../coretoolkit/data/layoutswitch_appear.fxml /epoc32/data/z/resource/effects/layoutswitch_appear.fxml
 ../coretoolkit/data/layoutswitch_disappear.fxml /epoc32/data/z/resource/effects/layoutswitch_disappear.fxml
-../coretoolkit/data/longappstart_img.mbm /epoc32/data/z/resource/effects/longappstart_img.mbm
 ../coretoolkit/data/musicplayer_popup_appear.fxml /epoc32/data/z/resource/effects/musicplayer_popup_appear.fxml
 ../coretoolkit/data/musicplayer_popup_disappear.fxml /epoc32/data/z/resource/effects/musicplayer_popup_disappear.fxml
 ../coretoolkit/data/musicplayer_viewswitch_in.fxml /epoc32/data/z/resource/effects/musicplayer_viewswitch_in.fxml
@@ -321,6 +316,7 @@
 ../coretoolkit/data/warningnote_appear.fxml /epoc32/data/z/resource/effects/warningnote_appear.fxml
 ../coretoolkit/data/warningnote_disappear.fxml /epoc32/data/z/resource/effects/warningnote_disappear.fxml
 
+
 // Effect definitions are considered as differentiating SW and thus not available for foundation.
 #endif // ifndef ALF_USE_OPENWF_COMPOSITION
 #endif // #ifndef SYMBIAN_GRAPHICS_WSERV_QT_EFFECTS