kernel/eka/memmodel/epoc/flexible/mmu/mthrash.cpp
changeset 33 0173bcd7697c
parent 0 a41df078684a
--- a/kernel/eka/memmodel/epoc/flexible/mmu/mthrash.cpp	Wed Dec 23 11:43:31 2009 +0000
+++ b/kernel/eka/memmodel/epoc/flexible/mmu/mthrash.cpp	Thu Jan 07 13:38:45 2010 +0200
@@ -75,6 +75,12 @@
 	c.iCount += aDelta;
 	c.iLastUpdateTime = currentTime;
 	
+	if(!iUpdateTimer.IsPending())	
+		{
+		TInt r = iUpdateTimer.OneShot(KUpdatePeriod, iUpdateDfc);
+		__NK_ASSERT_ALWAYS(r == KErrNone);
+		}
+	
 	NKern::FMSignal(&iMutex);
 	
 	__NK_ASSERT_DEBUG(c.iCount >= 0);
@@ -145,8 +151,21 @@
 		}
 	
 	iLastUpdateTime = currentTime;
-	TInt r = iUpdateTimer.Again(KUpdatePeriod);
-	if (r == KErrArgument)
-		r = iUpdateTimer.OneShot(KUpdatePeriod, iUpdateDfc);
-	__NK_ASSERT_ALWAYS(r == KErrNone);
+	
+	if(iThrashLevel != 0)
+	    {
+	    NKern::FMWait(&iMutex);
+	    if(!iUpdateTimer.IsPending())
+	        {
+            TInt r = iUpdateTimer.Again(KUpdatePeriod);
+            if (r == KErrArgument)
+                {
+                r = iUpdateTimer.OneShot(KUpdatePeriod, iUpdateDfc);  
+                }
+            __NK_ASSERT_ALWAYS(r == KErrNone);
+	        }
+        NKern::FMSignal(&iMutex);    
+        
+	    }
+	
 	}