From 36c814d26e2ef2b689e706b3e8db4777df4e2442 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Wed, 16 Jan 2013 23:20:56 +0100 Subject: Idle: use std::atomic instead of GMutex --- src/Idle.cxx | 34 +++++----------------------------- 1 file changed, 5 insertions(+), 29 deletions(-) (limited to 'src/Idle.cxx') diff --git a/src/Idle.cxx b/src/Idle.cxx index fce0cb7da..f1423ebeb 100644 --- a/src/Idle.cxx +++ b/src/Idle.cxx @@ -26,11 +26,11 @@ #include "Idle.hxx" #include "GlobalEvents.hxx" +#include + #include -#include -static unsigned idle_flags; -static GMutex *idle_mutex = NULL; +static std::atomic_uint idle_flags; static const char *const idle_names[] = { "database", @@ -44,32 +44,15 @@ static const char *const idle_names[] = { "update", "subscription", "message", - NULL + nullptr }; -void -idle_init(void) -{ - g_assert(idle_mutex == NULL); - idle_mutex = g_mutex_new(); -} - -void -idle_deinit(void) -{ - g_assert(idle_mutex != NULL); - g_mutex_free(idle_mutex); - idle_mutex = NULL; -} - void idle_add(unsigned flags) { assert(flags != 0); - g_mutex_lock(idle_mutex); idle_flags |= flags; - g_mutex_unlock(idle_mutex); GlobalEvents::Emit(GlobalEvents::IDLE); } @@ -77,14 +60,7 @@ idle_add(unsigned flags) unsigned idle_get(void) { - unsigned flags; - - g_mutex_lock(idle_mutex); - flags = idle_flags; - idle_flags = 0; - g_mutex_unlock(idle_mutex); - - return flags; + return idle_flags.fetch_and(0); } const char*const* -- cgit v1.2.3