aboutsummaryrefslogtreecommitdiff
path: root/src/UpdateRemove.cxx
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2013-01-21 10:42:47 +0100
committerMax Kellermann <max@duempel.org>2013-01-21 10:42:47 +0100
commit3928c4e9aebf08336192d57175c603a7dc17d8a2 (patch)
tree1954bf61efd19f57e46d3b8458f3d3a7b1eba9d7 /src/UpdateRemove.cxx
parent32799fef5c60568ffc693edab2e39d50549040d4 (diff)
UpdateRemove: Mutex/Cond instead of GMutex/GCond
Diffstat (limited to 'src/UpdateRemove.cxx')
-rw-r--r--src/UpdateRemove.cxx28
1 files changed, 10 insertions, 18 deletions
diff --git a/src/UpdateRemove.cxx b/src/UpdateRemove.cxx
index f7e6c80e..acf8bf46 100644
--- a/src/UpdateRemove.cxx
+++ b/src/UpdateRemove.cxx
@@ -22,6 +22,8 @@
#include "Playlist.hxx"
#include "Partition.hxx"
#include "GlobalEvents.hxx"
+#include "thread/Mutex.hxx"
+#include "thread/Cond.hxx"
#include "song.h"
#include "Main.hxx"
@@ -37,8 +39,8 @@
static const struct song *removed_song;
-static GMutex *remove_mutex;
-static GCond *remove_cond;
+static Mutex remove_mutex;
+static Cond remove_cond;
/**
* Safely remove a song from the database. This must be done in the
@@ -64,29 +66,19 @@ song_remove_event(void)
global_partition->DeleteSong(*removed_song);
/* clear "removed_song" and send signal to update thread */
- g_mutex_lock(remove_mutex);
+ remove_mutex.lock();
removed_song = NULL;
- g_cond_signal(remove_cond);
- g_mutex_unlock(remove_mutex);
+ remove_cond.signal();
+ remove_mutex.unlock();
}
void
update_remove_global_init(void)
{
- remove_mutex = g_mutex_new();
- remove_cond = g_cond_new();
-
GlobalEvents::Register(GlobalEvents::DELETE, song_remove_event);
}
void
-update_remove_global_finish(void)
-{
- g_mutex_free(remove_mutex);
- g_cond_free(remove_cond);
-}
-
-void
update_remove_song(const struct song *song)
{
assert(removed_song == NULL);
@@ -95,10 +87,10 @@ update_remove_song(const struct song *song)
GlobalEvents::Emit(GlobalEvents::DELETE);
- g_mutex_lock(remove_mutex);
+ remove_mutex.lock();
while (removed_song != NULL)
- g_cond_wait(remove_cond, remove_mutex);
+ remove_cond.wait(remove_mutex);
- g_mutex_unlock(remove_mutex);
+ remove_mutex.unlock();
}