diff options
author | Max Kellermann <max@duempel.org> | 2008-12-27 20:56:06 +0100 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2008-12-27 20:56:06 +0100 |
commit | ed9668f638ec3a31096821648f289b8a243f4ab2 (patch) | |
tree | 4ef39af2684f7aea0d4608f3413b68b7eb5b71a5 | |
parent | e8c44782d0014ac72c155616a3b3272824b2ff96 (diff) | |
download | mpd-ed9668f638ec3a31096821648f289b8a243f4ab2.tar.gz mpd-ed9668f638ec3a31096821648f289b8a243f4ab2.tar.xz mpd-ed9668f638ec3a31096821648f289b8a243f4ab2.zip |
notify: use GLib locking
Use GLib locking (GMutex, GCond) instead of pthread because GLib is
more portable, e.g. on mingw32.
-rw-r--r-- | src/notify.c | 29 | ||||
-rw-r--r-- | src/notify.h | 12 | ||||
-rw-r--r-- | src/output_internal.h | 1 |
3 files changed, 15 insertions, 27 deletions
diff --git a/src/notify.c b/src/notify.c index 7d25db517..24d0e3928 100644 --- a/src/notify.c +++ b/src/notify.c @@ -17,42 +17,33 @@ */ #include "notify.h" -#include "log.h" void notify_init(struct notify *notify) { - int ret; - - ret = pthread_mutex_init(¬ify->mutex, NULL); - if (ret != 0) - FATAL("pthread_mutex_init() failed"); - - ret = pthread_cond_init(¬ify->cond, NULL); - if (ret != 0) - FATAL("pthread_mutex_init() failed"); - + notify->mutex = g_mutex_new(); + notify->cond = g_cond_new(); notify->pending = false; } void notify_deinit(struct notify *notify) { - pthread_mutex_destroy(¬ify->mutex); - pthread_cond_destroy(¬ify->cond); + g_mutex_free(notify->mutex); + g_cond_free(notify->cond); } void notify_wait(struct notify *notify) { - pthread_mutex_lock(¬ify->mutex); + g_mutex_lock(notify->mutex); while (!notify->pending) - pthread_cond_wait(¬ify->cond, ¬ify->mutex); + g_cond_wait(notify->cond, notify->mutex); notify->pending = false; - pthread_mutex_unlock(¬ify->mutex); + g_mutex_unlock(notify->mutex); } void notify_signal(struct notify *notify) { - pthread_mutex_lock(¬ify->mutex); + g_mutex_lock(notify->mutex); notify->pending = true; - pthread_cond_signal(¬ify->cond); - pthread_mutex_unlock(¬ify->mutex); + g_cond_signal(notify->cond); + g_mutex_unlock(notify->mutex); } diff --git a/src/notify.h b/src/notify.h index 13b7dbe2e..cb4815357 100644 --- a/src/notify.h +++ b/src/notify.h @@ -19,20 +19,16 @@ #ifndef MPD_NOTIFY_H #define MPD_NOTIFY_H +#include <glib.h> + #include <stdbool.h> -#include <pthread.h> struct notify { - pthread_mutex_t mutex; - pthread_cond_t cond; + GMutex *mutex; + GCond *cond; bool pending; }; -#define NOTIFY_INITIALIZER { \ - .mutex = PTHREAD_MUTEX_INITIALIZER, \ - .cond = PTHREAD_COND_INITIALIZER, \ -} - void notify_init(struct notify *notify); void notify_deinit(struct notify *notify); diff --git a/src/output_internal.h b/src/output_internal.h index cea1455e3..b71508ff7 100644 --- a/src/output_internal.h +++ b/src/output_internal.h @@ -23,6 +23,7 @@ #include "pcm_utils.h" #include "notify.h" +#include <pthread.h> #include <time.h> struct audio_output { |