changeset 322:fd93a09655e3

The audio lock and unlock functions are now a part of the driver. The MacOS audio locking has been implemented, courtesy of Ryan Gordon
author Sam Lantinga <slouken@libsdl.org>
date Sat, 30 Mar 2002 19:48:56 +0000
parents af42e7c4c860
children b7e8038e40ae
files src/audio/SDL_audio.c src/audio/SDL_sysaudio.h
diffstat 2 files changed, 29 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/src/audio/SDL_audio.c	Sat Mar 30 18:53:23 2002 +0000
+++ b/src/audio/SDL_audio.c	Sat Mar 30 19:48:56 2002 +0000
@@ -230,6 +230,22 @@
 	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 @@
 	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 @@
 	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 @@
 	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);
 	}
 }
 
--- a/src/audio/SDL_sysaudio.h	Sat Mar 30 18:53:23 2002 +0000
+++ b/src/audio/SDL_sysaudio.h	Sat Mar 30 19:48:56 2002 +0000
@@ -59,6 +59,11 @@
 	void (*CloseAudio)(_THIS);
 
 	/* * * */
+	/* Lock / Unlock functions added for the Mac port */
+	void (*LockAudio)(_THIS);
+	void (*UnlockAudio)(_THIS);
+
+	/* * * */
 	/* Data common to all devices */
 
 	/* The current audio specification (shared with audio thread) */