--- 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