示例#1
0
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--;
    }
示例#2
0
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?
    }