diff mbox

[6/6] audio: Switch coreaudio to QemuMutex

Message ID 55cdae9265253263fb7dbc883d3297e52b13763f.1316537591.git.jan.kiszka@siemens.com
State New
Headers show

Commit Message

Jan Kiszka Sept. 20, 2011, 4:53 p.m. UTC
Using the error management of QemuMutex allows to simplify the code.

CC: malc <av1474@comtv.ru>
CC: Andreas Färber <andreas.faerber@web.de>
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
---
 audio/coreaudio.c |   56 +++++++---------------------------------------------
 1 files changed, 8 insertions(+), 48 deletions(-)
diff mbox

Patch

diff --git a/audio/coreaudio.c b/audio/coreaudio.c
index 5964c62..c34a593 100644
--- a/audio/coreaudio.c
+++ b/audio/coreaudio.c
@@ -24,9 +24,9 @@ 
 
 #include <CoreAudio/CoreAudio.h>
 #include <string.h>             /* strerror */
-#include <pthread.h>            /* pthread_X */
 
 #include "qemu-common.h"
+#include "qemu-thread.h"
 #include "audio.h"
 
 #define AUDIO_CAP "coreaudio"
@@ -44,7 +44,7 @@  struct {
 
 typedef struct coreaudioVoiceOut {
     HWVoiceOut hw;
-    pthread_mutex_t mutex;
+    QemuMutex mutex;
     int isAtexit;
     AudioDeviceID outputDeviceID;
     UInt32 audioDevicePropertyBufferFrameSize;
@@ -164,40 +164,12 @@  static void coreaudio_atexit (void)
     conf.isAtexit = 1;
 }
 
-static int coreaudio_lock (coreaudioVoiceOut *core, const char *fn_name)
-{
-    int err;
-
-    err = pthread_mutex_lock (&core->mutex);
-    if (err) {
-        dolog ("Could not lock voice for %s\nReason: %s\n",
-               fn_name, strerror (err));
-        return -1;
-    }
-    return 0;
-}
-
-static int coreaudio_unlock (coreaudioVoiceOut *core, const char *fn_name)
-{
-    int err;
-
-    err = pthread_mutex_unlock (&core->mutex);
-    if (err) {
-        dolog ("Could not unlock voice for %s\nReason: %s\n",
-               fn_name, strerror (err));
-        return -1;
-    }
-    return 0;
-}
-
 static int coreaudio_run_out (HWVoiceOut *hw, int live)
 {
     int decr;
     coreaudioVoiceOut *core = (coreaudioVoiceOut *) hw;
 
-    if (coreaudio_lock (core, "coreaudio_run_out")) {
-        return 0;
-    }
+    qemu_mutex_lock(&core->mutex);
 
     if (core->decr > live) {
         ldebug ("core->decr %d live %d core->live %d\n",
@@ -240,10 +212,7 @@  static OSStatus audioDeviceIOProc(
 #endif
 #endif
 
-    if (coreaudio_lock (core, "audioDeviceIOProc")) {
-        inInputTime = 0;
-        return 0;
-    }
+    qemu_mutex_lock(&core->mutex);
 
     frameCount = core->audioDevicePropertyBufferFrameSize;
     live = core->live;
@@ -251,7 +220,7 @@  static OSStatus audioDeviceIOProc(
     /* if there are not enough samples, set signal and return */
     if (live < frameCount) {
         inInputTime = 0;
-        coreaudio_unlock (core, "audioDeviceIOProc(empty)");
+        qemu_mutex_unlock(&core->mutex);
         return 0;
     }
 
@@ -278,7 +247,7 @@  static OSStatus audioDeviceIOProc(
     core->decr += frameCount;
     core->rpos = rpos;
 
-    coreaudio_unlock (core, "audioDeviceIOProc");
+    qemu_mutex_unlock(&core->mutex);
     return 0;
 }
 
@@ -296,12 +265,7 @@  static int coreaudio_init_out (HWVoiceOut *hw, struct audsettings *as)
     const char *typ = "playback";
     AudioValueRange frameRange;
 
-    /* create mutex */
-    err = pthread_mutex_init(&core->mutex, NULL);
-    if (err) {
-        dolog("Could not create mutex\nReason: %s\n", strerror (err));
-        return -1;
-    }
+    qemu_mutex_init(&core->mutex);
 
     audio_pcm_init_info (&hw->info, as);
 
@@ -461,11 +425,7 @@  static void coreaudio_fini_out (HWVoiceOut *hw)
     }
     core->outputDeviceID = kAudioDeviceUnknown;
 
-    /* destroy mutex */
-    err = pthread_mutex_destroy(&core->mutex);
-    if (err) {
-        dolog("Could not destroy mutex\nReason: %s\n", strerror (err));
-    }
+    qemu_mutex_destroy(&core->mutex);
 }
 
 static int coreaudio_ctl_out (HWVoiceOut *hw, int cmd, ...)