diff options
Diffstat (limited to 'src/event/Loop.cxx')
-rw-r--r-- | src/event/Loop.cxx | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/event/Loop.cxx b/src/event/Loop.cxx index e32ba5582..40a2469a2 100644 --- a/src/event/Loop.cxx +++ b/src/event/Loop.cxx @@ -79,6 +79,7 @@ EventLoop::AddIdle(IdleMonitor &i) assert(std::find(idle.begin(), idle.end(), &i) == idle.end()); idle.push_back(&i); + again = true; } void @@ -98,6 +99,7 @@ EventLoop::AddTimer(TimeoutMonitor &t, unsigned ms) assert(IsInside()); timers.insert(TimerRecord(t, now_ms + ms)); + again = true; } void @@ -123,6 +125,7 @@ EventLoop::Run() do { now_ms = ::MonotonicClockMS(); + again = false; /* invoke timers */ @@ -149,7 +152,6 @@ EventLoop::Run() /* invoke idle */ - const bool idle_empty = idle.empty(); while (!idle.empty()) { IdleMonitor &m = *idle.front(); idle.pop_front(); @@ -159,7 +161,7 @@ EventLoop::Run() return; } - if (!idle_empty) + if (again) /* re-evaluate timers because one of the IdleMonitors may have added a new timeout */ |