diff -r 96e5fb8b040d -r 36bfc973b146 kernel/eka/memmodel/epoc/flexible/mmu/mthrash.cpp --- 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); + + } + }