From ed9668f638ec3a31096821648f289b8a243f4ab2 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Sat, 27 Dec 2008 20:56:06 +0100 Subject: notify: use GLib locking Use GLib locking (GMutex, GCond) instead of pthread because GLib is more portable, e.g. on mingw32. --- src/notify.c | 29 ++++++++++------------------- src/notify.h | 12 ++++-------- src/output_internal.h | 1 + 3 files changed, 15 insertions(+), 27 deletions(-) (limited to 'src') 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 + #include -#include 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 #include struct audio_output { -- cgit v1.2.3