diff -r e5af45d51884 -r 31fccae4f8a7 uiacceltk/hitchcock/goommonitor/src/goommemorymonitor.cpp --- a/uiacceltk/hitchcock/goommonitor/src/goommemorymonitor.cpp Tue Aug 31 16:07:35 2010 +0300 +++ b/uiacceltk/hitchcock/goommonitor/src/goommemorymonitor.cpp Wed Sep 01 12:16:53 2010 +0100 @@ -205,10 +205,9 @@ FUNC_LOG; // keep only one notification active at a moment #ifdef USE_ASYNCYH_NOTIFICATIONS - + TInt current = GetFreeMemory(); if (aThreshold == EGL_PROF_TOTAL_MEMORY_USAGE_LT_NOK) { - TInt current = GetFreeMemory(); if(current >= iGoodThreshold && (!NeedToPostponeMemGood())) { TRACES2("FreeMemThresholdCrossedL : crossed good threshold Free %d, GThresh %d, Calling MemoryGood",current, iGoodThreshold); @@ -230,15 +229,20 @@ } else//if aThreshold == EGL_PROF_TOTAL_MEMORY_USAGE_GT_NOK { - TRACES1("FreeMemThresholdCrossedL : crossed low threshold %d", iLowThreshold); - iMemAllocationsGrowing->Stop(); - iMemAllocationsGoingDown->Continue(); - if((iTrigger == EGOomTriggerNone) && !NeedToPostponeMemGood()) + if(current < iLowThreshold) { - if(iSynchTimer->IsActive()) - iSynchTimer->Cancel(); - StartFreeSomeRamL(iGoodThreshold, EGOomTriggerThresholdCrossed); + TRACES1("FreeMemThresholdCrossedL : crossed low threshold %d", iLowThreshold); + iMemAllocationsGrowing->Stop(); + iMemAllocationsGoingDown->Continue(); + if((iTrigger == EGOomTriggerNone) && !NeedToPostponeMemGood()) + { + if(iSynchTimer->IsActive()) + iSynchTimer->Cancel(); + StartFreeSomeRamL(iGoodThreshold, EGOomTriggerThresholdCrossed); + } } + else + TRACES2("FreeMemThresholdCrossedL : crossed low threshold %d, FALSE ALARM, FreeMem = %d", iLowThreshold, current); } #endif } @@ -335,22 +339,13 @@ // Run the memory freeing actions iGOomActionList->FreeMemory(aMaxPriority); + SwitchMemMode(EGOomLowMemMode); } void CMemoryMonitor::SwitchMemMode(TGOomMemMode aMemMode) { if(iMemMode == aMemMode) - { - if(iMemMode == EGOomGoodMemMode) - { - TRACES("CMemoryMonitor::SwitchMemMode NOT switching rendering mode. Already in GOOD Mode"); - } - else - { - TRACES("CMemoryMonitor::SwitchMemMode NOT switching rendering mode. Already in LOW Mode"); - } return; - } #ifdef SYMBIAN_GRAPHICS_WSERV_QT_EFFECTS TWsEvent event; @@ -365,7 +360,6 @@ iLowOnMemWgs.Reset(); iGOomWindowGroupList->GetListOfWindowGroupsWSurfaces(iLowOnMemWgs); event.SetType(KGoomMemoryLowEvent); - TRACES("CMemoryMonitor::SwitchMemMode. Switching rendering mode to SW, Sending KGoomMemoryLowEvent"); } else { @@ -374,20 +368,15 @@ if(iRendswitched < 3) iRendswitched ++; else - { - TRACES("CMemoryMonitor::SwitchMemMode GOOM Detected SW-HW-SW looping. NOT switching to HW rendering mode"); return; - } } event.SetType(KGoomMemoryGoodEvent); - TRACES("CMemoryMonitor::SwitchMemMode. Switching rendering mode to HW, Sending KGoomMemoryGoodEvent"); } for (TInt i = iLowOnMemWgs.Count()-1; i>=0; i--) { iWs.SendEventToWindowGroup(iLowOnMemWgs[i], event); - TRACES1("CMemoryMonitor::SwitchMemMode. Sending event to wg %d",iLowOnMemWgs[i]); } #endif