Mercurial > sdl-ios-xcode
diff src/audio/macrom/SDL_romaudio.c @ 348:25809353f877
Re-added MacOS X audio locking
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Sat, 13 Apr 2002 23:31:07 +0000 |
parents | f25f666d609a |
children | b8d311d90021 |
line wrap: on
line diff
--- a/src/audio/macrom/SDL_romaudio.c Sat Apr 13 20:33:21 2002 +0000 +++ b/src/audio/macrom/SDL_romaudio.c Sat Apr 13 23:31:07 2002 +0000 @@ -91,6 +91,10 @@ 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 @@ }; #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 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);