Skip to content
Permalink
Browse files

The audio lock and unlock functions are now a part of the driver.

The MacOS audio locking has been implemented, courtesy of Ryan Gordon
  • Loading branch information
slouken committed Mar 30, 2002
1 parent 707ab0b commit 7c4e91d02cf22538f75411e32e022ac465b66a96
Showing with 29 additions and 10 deletions.
  1. +24 −10 src/audio/SDL_audio.c
  2. +5 −0 src/audio/SDL_sysaudio.h
@@ -230,6 +230,22 @@ int SDL_RunAudio(void *audiop)
return(0);
}

static void SDL_LockAudio_Default(SDL_AudioDevice *audio)
{
if ( audio->thread && (SDL_ThreadID() == audio->threadid) ) {
return;
}
SDL_mutexP(audio->mixer_lock);
}

static void SDL_UnlockAudio_Default(SDL_AudioDevice *audio)
{
if ( audio->thread && (SDL_ThreadID() == audio->threadid) ) {
return;
}
SDL_mutexV(audio->mixer_lock);
}

int SDL_AudioInit(const char *driver_name)
{
SDL_AudioDevice *audio;
@@ -309,6 +325,10 @@ int SDL_AudioInit(const char *driver_name)
current_audio = audio;
if ( current_audio ) {
current_audio->name = bootstrap[i]->name;
if ( !current_audio->LockAudio && !current_audio->UnlockAudio ) {
current_audio->LockAudio = SDL_LockAudio_Default;
current_audio->UnlockAudio = SDL_UnlockAudio_Default;
}
}
return(0);
}
@@ -506,11 +526,8 @@ void SDL_LockAudio (void)
SDL_AudioDevice *audio = current_audio;

/* Obtain a lock on the mixing buffers */
if ( audio ) {
if ( audio->thread && (SDL_ThreadID() == audio->threadid) ) {
return;
}
SDL_mutexP(audio->mixer_lock);
if ( audio && audio->LockAudio ) {
audio->LockAudio(audio);
}
}

@@ -519,11 +536,8 @@ void SDL_UnlockAudio (void)
SDL_AudioDevice *audio = current_audio;

/* Release lock on the mixing buffers */
if ( audio ) {
if ( audio->thread && (SDL_ThreadID() == audio->threadid) ) {
return;
}
SDL_mutexV(audio->mixer_lock);
if ( audio && audio->UnlockAudio ) {
audio->UnlockAudio(audio);
}
}

@@ -58,6 +58,11 @@ struct SDL_AudioDevice {
void (*WaitDone)(_THIS);
void (*CloseAudio)(_THIS);

/* * * */
/* Lock / Unlock functions added for the Mac port */
void (*LockAudio)(_THIS);
void (*UnlockAudio)(_THIS);

/* * * */
/* Data common to all devices */

0 comments on commit 7c4e91d

Please sign in to comment.