EXPORT_C void CHuiFxEngine::ReleaseRenderbuffer(CHuiFxRenderbuffer* aBuffer) { #ifdef HUIFX_TRACE RDebug::Print(_L("CHuiFxEngine::ReleaseRenderbuffer - buffer: 0x%x "), aBuffer); #endif ASSERT((aBuffer) && (iBuffersInUse > 0)); #ifdef HUIFX_RBCACHE_ENABLED if(iLowGraphicsMemoryMode < EHuiMemoryLevelReduced || IsCacheFull()) { #ifdef HUIFX_TRACE RDebug::Print(_L("CHuiFxEngine::ReleaseRenderbuffer() --- Renderbuffer cache full! Suspectible for memory fragmentation! Cache size is %d entries."), CACHE_SIZE); #endif #endif ReleaseNativeRenderbuffer(aBuffer); aBuffer = 0; #ifdef HUIFX_RBCACHE_ENABLED } else { InsertFreeRenderbuffer(aBuffer); } #endif iBuffersInUse--; }
void CHuiFxEngine::InsertFreeRenderbuffer(CHuiFxRenderbuffer* aBuffer) { #ifdef HUIFX_TRACE RDebug::Print(_L("CHuiFxEngine::InsertFreeRenderbuffer - buf: 0x%x "), aBuffer); #endif #ifdef _DEBUG const int preiFreeBuffers = iBuffersInCache; #endif ASSERT((aBuffer) && (!IsCacheFull())); for(int i = 0; i < CACHE_SIZE; i++) { if(iBufferCache[i] == 0) { iBufferCache[i] = aBuffer; iBuffersInCache++; aBuffer = 0; break; } } ASSERT((aBuffer == 0) && (preiFreeBuffers + 1 == iBuffersInCache)); // we have actually inserted the aBuffer into iFreeBufferList successfully? }