diff src/audio/dsp/SDL_dspaudio.c @ 2071:579abbb51f80

Merged r2906:2907 from 1.2 branch to trunk: power of two channels in dsp backend.
author Ryan C. Gordon <icculus@icculus.org>
date Mon, 13 Nov 2006 00:38:13 +0000
parents 866052b01ee5
children 99210400e8b9
line wrap: on
line diff
--- a/src/audio/dsp/SDL_dspaudio.c	Sat Nov 11 06:48:57 2006 +0000
+++ b/src/audio/dsp/SDL_dspaudio.c	Mon Nov 13 00:38:13 2006 +0000
@@ -166,6 +166,15 @@
         devname = ((iscapture) ? inputDevices[0] : outputDevices[0]);
     }
 
+    /* Make sure fragment size stays a power of 2, or OSS fails. */
+    /* I don't know which of these are actually legal values, though... */
+    if (this->spec.channels > 8)
+        this->spec.channels = 8;
+    else if (this->spec.channels > 4)
+        this->spec.channels = 4;
+    else if (this->spec.channels > 2)
+        this->spec.channels = 2;
+
     /* Initialize all variables that we clean on shutdown */
     this->hidden = (struct SDL_PrivateAudioData *)
         SDL_malloc((sizeof *this->hidden));