uiacceltk/hitchcock/goommonitor/src/goommemorymonitor.cpp
branchRCL_3
changeset 19 e5af45d51884
parent 18 1801340c26a2
child 20 31fccae4f8a7
--- a/uiacceltk/hitchcock/goommonitor/src/goommemorymonitor.cpp	Thu Aug 19 10:48:02 2010 +0300
+++ b/uiacceltk/hitchcock/goommonitor/src/goommemorymonitor.cpp	Tue Aug 31 16:07:35 2010 +0300
@@ -205,9 +205,10 @@
     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);
@@ -229,20 +230,15 @@
         }
     else//if aThreshold == EGL_PROF_TOTAL_MEMORY_USAGE_GT_NOK
         {
-        if(current < iLowThreshold)
+        TRACES1("FreeMemThresholdCrossedL : crossed low threshold %d", iLowThreshold);
+        iMemAllocationsGrowing->Stop();
+        iMemAllocationsGoingDown->Continue();
+        if((iTrigger == EGOomTriggerNone) && !NeedToPostponeMemGood())
             {
-            TRACES1("FreeMemThresholdCrossedL : crossed low threshold %d", iLowThreshold);
-            iMemAllocationsGrowing->Stop();
-            iMemAllocationsGoingDown->Continue();
-            if((iTrigger == EGOomTriggerNone) && !NeedToPostponeMemGood())
-                {
-                if(iSynchTimer->IsActive())
-                    iSynchTimer->Cancel();
-                StartFreeSomeRamL(iGoodThreshold, EGOomTriggerThresholdCrossed);
-                }
+            if(iSynchTimer->IsActive())
+                iSynchTimer->Cancel();
+            StartFreeSomeRamL(iGoodThreshold, EGOomTriggerThresholdCrossed);
             }
-        else
-            TRACES2("FreeMemThresholdCrossedL : crossed low threshold %d, FALSE ALARM, FreeMem = %d", iLowThreshold, current);
         }
 #endif
     }
@@ -339,13 +335,22 @@
     // 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;
@@ -360,6 +365,7 @@
         iLowOnMemWgs.Reset();
         iGOomWindowGroupList->GetListOfWindowGroupsWSurfaces(iLowOnMemWgs);
         event.SetType(KGoomMemoryLowEvent);
+        TRACES("CMemoryMonitor::SwitchMemMode. Switching rendering mode to SW, Sending KGoomMemoryLowEvent");
         }
     else
         {
@@ -368,15 +374,20 @@
             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