From ed9668f638ec3a31096821648f289b8a243f4ab2 Mon Sep 17 00:00:00 2001
From: Max Kellermann <max@duempel.org>
Date: Sat, 27 Dec 2008 20:56:06 +0100
Subject: [PATCH] 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(-)

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(&notify->mutex, NULL);
-	if (ret != 0)
-		FATAL("pthread_mutex_init() failed");
-
-	ret = pthread_cond_init(&notify->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(&notify->mutex);
-	pthread_cond_destroy(&notify->cond);
+	g_mutex_free(notify->mutex);
+	g_cond_free(notify->cond);
 }
 
 void notify_wait(struct notify *notify)
 {
-	pthread_mutex_lock(&notify->mutex);
+	g_mutex_lock(notify->mutex);
 	while (!notify->pending)
-		pthread_cond_wait(&notify->cond, &notify->mutex);
+		g_cond_wait(notify->cond, notify->mutex);
 	notify->pending = false;
-	pthread_mutex_unlock(&notify->mutex);
+	g_mutex_unlock(notify->mutex);
 }
 
 void notify_signal(struct notify *notify)
 {
-	pthread_mutex_lock(&notify->mutex);
+	g_mutex_lock(notify->mutex);
 	notify->pending = true;
-	pthread_cond_signal(&notify->cond);
-	pthread_mutex_unlock(&notify->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 {