From 362d5d96357bb20d8a95194443d86aaac5382a90 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sat, 13 Apr 2002 23:31:07 +0000 Subject: [PATCH] Re-added MacOS X audio locking --- src/audio/macrom/SDL_romaudio.c | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/audio/macrom/SDL_romaudio.c b/src/audio/macrom/SDL_romaudio.c index af1e19284..b64f76475 100644 --- a/src/audio/macrom/SDL_romaudio.c +++ b/src/audio/macrom/SDL_romaudio.c @@ -91,6 +91,10 @@ static SDL_AudioDevice *Audio_CreateDevice(int devindex) this->UnlockAudio = Mac_UnlockAudio; this->free = Audio_DeleteDevice; +#ifdef MACOSX /* MacOS X uses threaded audio, so normal thread code is okay */ + this->LockAudio = NULL; + this->UnlockAudio = NULL; +#endif return this; } @@ -100,7 +104,7 @@ AudioBootStrap SNDMGR_bootstrap = { }; #if defined(TARGET_API_MAC_CARBON) || defined(USE_RYANS_SOUNDCODE) -/* FIXME: Does this work correctly on MacOS X as well? */ +/* This works correctly on MacOS X */ #pragma options align=power @@ -115,19 +119,23 @@ static volatile Uint32 fill_me = 0; static void mix_buffer(SDL_AudioDevice *audio, UInt8 *buffer) { if ( ! audio->paused ) { +#ifdef MACOSX + SDL_mutexP(audio->mixer_lock); +#endif if ( audio->convert.needed ) { - audio->spec.callback(audio->spec.userdata, + audio->spec.callback(audio->spec.userdata, (Uint8 *)audio->convert.buf,audio->convert.len); - SDL_ConvertAudio(&audio->convert); -#if 0 + SDL_ConvertAudio(&audio->convert); if ( audio->convert.len_cvt != audio->spec.size ) { - /* Uh oh... probably crashes here; */ + /* Uh oh... probably crashes here */; } -#endif memcpy(buffer, audio->convert.buf, audio->convert.len_cvt); } else { audio->spec.callback(audio->spec.userdata, buffer, audio->spec.size); } +#ifdef MACOSX + SDL_mutexV(audio->mixer_lock); +#endif } DecrementAtomic((SInt32 *) &need_to_mix);