IdleMonitor: new class to replace GlobalEvents::IDLE

Use MaskMonitor to eliminate duplicate code.
This commit is contained in:
Max Kellermann
2016-03-10 09:27:07 +01:00
parent 07add0bd91
commit 5ffb82993e
7 changed files with 60 additions and 37 deletions

View File

@@ -27,25 +27,12 @@
#include "Main.hxx"
#include "Instance.hxx"
#include <atomic>
#include <assert.h>
static std::atomic_uint idle_flags;
void
idle_add(unsigned flags)
{
assert(flags != 0);
unsigned old_flags = idle_flags.fetch_or(flags);
if ((old_flags & flags) != flags)
instance->global_events.Emit(GlobalEvents::IDLE);
}
unsigned
idle_get(void)
{
return idle_flags.exchange(0);
instance->EmitIdle(flags);
}