diff options
Diffstat (limited to 'src/event')
-rw-r--r-- | src/event/DeferredMonitor.cxx | 2 | ||||
-rw-r--r-- | src/event/DeferredMonitor.hxx | 8 |
2 files changed, 7 insertions, 3 deletions
diff --git a/src/event/DeferredMonitor.cxx b/src/event/DeferredMonitor.cxx index 10aa0d757..e4242414c 100644 --- a/src/event/DeferredMonitor.cxx +++ b/src/event/DeferredMonitor.cxx @@ -32,7 +32,7 @@ DeferredMonitor::Cancel() void DeferredMonitor::Schedule() { - const unsigned id = g_idle_add(Callback, this); + const unsigned id = loop.AddIdle(Callback, this); const auto old_id = source_id.exchange(id); if (old_id != 0) g_source_remove(old_id); diff --git a/src/event/DeferredMonitor.hxx b/src/event/DeferredMonitor.hxx index 8a08facba..e055b6c9d 100644 --- a/src/event/DeferredMonitor.hxx +++ b/src/event/DeferredMonitor.hxx @@ -26,15 +26,19 @@ #include <atomic> +class EventLoop; + /** * Defer execution of an event into an #EventLoop. */ class DeferredMonitor { + EventLoop &loop; + std::atomic<guint> source_id; public: - DeferredMonitor() - :source_id(0) {} + DeferredMonitor(EventLoop &_loop) + :loop(_loop), source_id(0) {} ~DeferredMonitor() { Cancel(); |