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