diff options
Diffstat (limited to '')
-rw-r--r-- | src/event/IdleMonitor.cxx | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/event/IdleMonitor.cxx b/src/event/IdleMonitor.cxx index 1ee86f7f5..c99c66b26 100644 --- a/src/event/IdleMonitor.cxx +++ b/src/event/IdleMonitor.cxx @@ -29,8 +29,13 @@ IdleMonitor::Cancel() if (!IsActive()) return; +#ifdef USE_EPOLL + active = false; + loop.RemoveIdle(*this); +#else g_source_remove(source_id); source_id = 0; +#endif } void @@ -42,19 +47,32 @@ IdleMonitor::Schedule() /* already scheduled */ return; +#ifdef USE_EPOLL + active = true; + loop.AddIdle(*this); +#else source_id = loop.AddIdle(Callback, this); +#endif } void IdleMonitor::Run() { assert(loop.IsInside()); + +#ifdef USE_EPOLL + assert(active); + active = false; +#else assert(source_id != 0); source_id = 0; +#endif OnIdle(); } +#ifndef USE_EPOLL + gboolean IdleMonitor::Callback(gpointer data) { @@ -62,3 +80,5 @@ IdleMonitor::Callback(gpointer data) monitor.Run(); return false; } + +#endif |