aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/event/Loop.cxx7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/event/Loop.cxx b/src/event/Loop.cxx
index 40a2469a2..0e76afc25 100644
--- a/src/event/Loop.cxx
+++ b/src/event/Loop.cxx
@@ -207,11 +207,16 @@ EventLoop::AddDeferred(DeferredMonitor &d)
assert(std::find(deferred.begin(),
deferred.end(), &d) == deferred.end());
+ /* we don't need to wake up the EventLoop if another
+ DeferredMonitor has already done it */
+ const bool must_wake = deferred.empty();
+
d.pending = true;
deferred.push_back(&d);
mutex.unlock();
- wake_fd.Write();
+ if (must_wake)
+ wake_fd.Write();
}
void