The audio lock and unlock functions are now a part of the driver.
The MacOS audio locking has been implemented, courtesy of Ryan Gordon --HG-- extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%40323
This commit is contained in:
parent
2341158b2a
commit
a55059b4d3
2 changed files with 29 additions and 10 deletions
|
@ -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 */
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue