summaryrefslogtreecommitdiff
path: root/utils/LocTimer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'utils/LocTimer.cpp')
-rw-r--r--utils/LocTimer.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/utils/LocTimer.cpp b/utils/LocTimer.cpp
index 2d972c4..1699359 100644
--- a/utils/LocTimer.cpp
+++ b/utils/LocTimer.cpp
@@ -342,8 +342,12 @@ void LocTimerContainer::remove(LocTimerDelegate& timer) {
LocMsg(), mTimerContainer(&container), mTimer(&timer) {}
inline virtual void proc() const {
LocTimerDelegate* priorTop = mTimerContainer->getSoonestTimer();
- if (NULL != ((LocHeap*)mTimerContainer)->remove((LocRankable&)*mTimer)) {
- mTimerContainer->updateSoonestTime(priorTop);
+ // update soonest timer only if mTimer is actually removed from mTimerContainer
+ // AND mTimer is not priorTop.
+ if (priorTop == ((LocHeap*)mTimerContainer)->remove((LocRankable&)*mTimer)) {
+ // if passing in NULL, we tell updateSoonestTime to update kernel with
+ // the current top timer interval.
+ mTimerContainer->updateSoonestTime(NULL);
}
delete mTimer;
}