--- a/kernel/eka/memmodel/epoc/flexible/mmu/mthrash.cpp Thu Dec 17 09:24:54 2009 +0200
+++ 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);
+
+ }
+
}