uiacceltk/hitchcock/goommonitor/src/goommemorymonitor.cpp
branchRCL_3
changeset 52 31fccae4f8a7
parent 51 e5af45d51884
child 54 78e19bc09b73
--- 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