# HG changeset patch
# User alex
# Date 1088241667 0
# Node ID c1371fce726759d692f5459e6e900c4ca101f6a6
# Parent  9709ce10194980af6a9710a92e10605792f2d153
make the internal sdl mixer optional, idea by Reimar Doffinger

diff -r 9709ce101949 -r c1371fce7267 libao2/ao_sdl.c
--- a/libao2/ao_sdl.c	Sat Jun 26 09:14:20 2004 +0000
+++ b/libao2/ao_sdl.c	Sat Jun 26 09:21:07 2004 +0000
@@ -35,6 +35,9 @@
 
 LIBAO_EXTERN(sdl)
 
+// turn this on if you want to use the slower SDL_MixAudio
+#undef USE_SDL_INTERNAL_MIXER
+
 // Samplesize used by the SDLlib AudioSpec struct
 #ifdef WIN32
 #define SAMPLESIZE 2048
@@ -53,7 +56,9 @@
 static unsigned int buf_write=0;
 static unsigned int buf_read_pos=0;
 static unsigned int buf_write_pos=0;
+#ifdef USE_SDL_INTERNAL_MIXER
 static unsigned char volume=SDL_MIX_MAXVOLUME;
+#endif
 static int full_buffers=0;
 static int buffered_bytes=0;
 
@@ -87,7 +92,11 @@
     x=BUFFSIZE-buf_read_pos;
     if(x>len) x=len;
     if (x>buffered_bytes) x=buffered_bytes;
+#ifdef USE_SDL_INTERNAL_MIXER
     SDL_MixAudio(data+len2,buffer[buf_read]+buf_read_pos,x,volume);
+#else
+    memcpy(data+len2,buffer[buf_read]+buf_read_pos,x);
+#endif
     len2+=x; len-=x;
     buffered_bytes-=x; buf_read_pos+=x;
     if(buf_read_pos>=BUFFSIZE){
@@ -121,6 +130,7 @@
 
 // to set/get/query special features/parameters
 static int control(int cmd,void *arg){
+#ifdef USE_SDL_INTERNAL_MIXER
 	switch (cmd) {
 		case AOCONTROL_GET_VOLUME:
 		{
@@ -137,7 +147,8 @@
 			return CONTROL_OK;
 		}
 	}
-	return -1;
+#endif
+	return CONTROL_UNKNOWN;
 }
 
 // SDL Callback function