aboutsummaryrefslogtreecommitdiffstats
path: root/src/event
diff options
context:
space:
mode:
Diffstat (limited to 'src/event')
-rw-r--r--src/event/DeferredMonitor.cxx2
-rw-r--r--src/event/DeferredMonitor.hxx8
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();