From 313b1f04bfd4733411ddf6a50b85777351d61978 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Sun, 12 Nov 2006 21:23:57 +0000 Subject: [PATCH] Block fruity channel values in dspaudio, or the fragment size won't be a power of 2. --- src/audio/dsp/SDL_dspaudio.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/audio/dsp/SDL_dspaudio.c b/src/audio/dsp/SDL_dspaudio.c index 183cdd170..95617e3b0 100644 --- a/src/audio/dsp/SDL_dspaudio.c +++ b/src/audio/dsp/SDL_dspaudio.c @@ -168,6 +168,15 @@ static int DSP_OpenAudio(_THIS, SDL_AudioSpec *spec) int frag_spec; Uint16 test_format; + /* 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 (spec->channels > 8) + spec->channels = 8; + else if (spec->channels > 4) + spec->channels = 4; + else if (spec->channels > 2) + spec->channels = 2; + /* Open the audio device */ audio_fd = SDL_OpenAudioPath(audiodev, sizeof(audiodev), OPEN_FLAGS, 0); if ( audio_fd < 0 ) {