uiacceltk/hitchcock/coretoolkit/src/HuiCanvasTextureCache.cpp
changeset 19 f5bac0badc7e
parent 14 83d2d132aa58
child 21 6ce30188c5bf
--- a/uiacceltk/hitchcock/coretoolkit/src/HuiCanvasTextureCache.cpp	Fri Apr 16 15:56:24 2010 +0300
+++ b/uiacceltk/hitchcock/coretoolkit/src/HuiCanvasTextureCache.cpp	Mon May 03 13:22:43 2010 +0300
@@ -2100,7 +2100,7 @@
 CHuiCanvasTextureCache::CHuiCanvasTextureCache()
     {
     SetMemoryLevel(EHuiMemoryLevelNormal);
-    CHuiStatic::Env().AddLowMemoryObserver(this);
+    CHuiStatic::Env().AddMemoryLevelObserver(this);
     }
 
 // ---------------------------------------------------------------------------
@@ -2109,7 +2109,7 @@
 //
 CHuiCanvasTextureCache::~CHuiCanvasTextureCache()
     {
-    CHuiStatic::Env().RemoveLowMemoryObserver(this);
+    CHuiStatic::Env().RemoveMemoryLevelObserver(this);
     iCachedTexts.ResetAndDestroy();
     iCachedImages.ResetAndDestroy();        
     iRecycledTextures.ResetAndDestroy();
@@ -3170,7 +3170,7 @@
 
     for(TInt i=entries.Count() - 1; i >= 0; i--)
         {
-        if (iCachedRenderBuffers[i]->iCanvasRenderBuffer)
+        if (entries[i]->iCanvasRenderBuffer)
             {        
             TSize renderBufferSize = entries[i]->iCanvasRenderBuffer->Size();    
             totalUnusedRenderBufferBytes += renderBufferSize.iWidth * renderBufferSize.iHeight * KHuiCanvasRenderBufferEstimatedBpp/8.f;
@@ -3473,6 +3473,25 @@
             delete entry;            
             }                    
         }
+    else if(iMemoryLevel <= EHuiMemoryLevelReduced)
+        {
+        // free all the caches but allow using renderbuffers
+        #ifdef HUI_DEBUG_PRINT_PERFORMANCE_INTERVAL
+        RDebug::Print(_L("-- CHuiCanvasTextureCache::SetMemoryLevel: Enabling recuded memory state"));
+        RDebug::Print(_L("-- CHuiCanvasTextureCache::SetMemoryLevel: Caching of textures disabled but renderbuffers enabled"));
+        #endif
+        // Set cache sizes to minimum
+        iMaxTextureMemoryInKBytes = 0;
+        iMaxRenderBufferMemoryInKBytes = 0;
+        
+        // Set flags to make sure we check all entries
+        iHasReleasedTexts = ETrue;
+        iHasReleasedImages = ETrue;
+        iHasReleasedRenderBuffers = ETrue;
+        
+        // Delete released cached entries
+        DeleteAllReleasedEntries(EFalse);
+        }
     else
         {
         #ifdef HUI_DEBUG_PRINT_PERFORMANCE_INTERVAL