From 6efe5fd6dd948937a19c065991e73ac4602a3c99 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Thu, 31 Aug 2006 23:16:48 +0000 Subject: [PATCH] Actually, my silly logic bug was actually correct. :/ --- src/audio/amigaos/SDL_ahiaudio.c | 7 +++++-- src/audio/baudio/SDL_beaudio.cc | 7 +++++-- src/audio/dart/SDL_dart.c | 7 +++++-- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/audio/amigaos/SDL_ahiaudio.c b/src/audio/amigaos/SDL_ahiaudio.c index ccc3ceef6..ca696e1d5 100644 --- a/src/audio/amigaos/SDL_ahiaudio.c +++ b/src/audio/amigaos/SDL_ahiaudio.c @@ -227,11 +227,13 @@ AHI_OpenAudio(_THIS, SDL_AudioSpec * spec) { // int width; SDL_AudioFormat test_format = SDL_FirstAudioFormat(spec->format); + int valid_datatype = 1; D(bug("AHI opening...\n")); /* Determine the audio parameters from the AudioSpec */ - while (test_format) { + while ((!valid_datatype) && (test_format)) { + valid_datatype = 1; switch (test_format) { case AUDIO_S8: D(bug("AUDIO_S8...\n")); @@ -264,12 +266,13 @@ AHI_OpenAudio(_THIS, SDL_AudioSpec * spec) break; default: + valid_datatype = 0; test_format = SDL_NextAudioFormat(); break; } } - if (!test_format) { /* shouldn't happen, but just in case... */ + if (!valid_datatype) { /* shouldn't happen, but just in case... */ SDL_SetError("Unsupported audio format"); return (-1); } diff --git a/src/audio/baudio/SDL_beaudio.cc b/src/audio/baudio/SDL_beaudio.cc index c257142b0..2fab1d897 100644 --- a/src/audio/baudio/SDL_beaudio.cc +++ b/src/audio/baudio/SDL_beaudio.cc @@ -155,6 +155,7 @@ extern "C" int BE_OpenAudio(_THIS, SDL_AudioSpec * spec) { + int valid_datatype = 0; media_raw_audio_format format; SDL_AudioFormat test_format = SDL_FirstAudioFormat(spec->format); @@ -163,7 +164,8 @@ extern "C" format.byte_order = B_MEDIA_LITTLE_ENDIAN; format.frame_rate = (float) spec->freq; format.channel_count = spec->channels; /* !!! FIXME: support > 2? */ - while (test_format) { + while ((!valid_datatype) && (test_format)) { + valid_datatype = 1; spec->format = test_format; switch (test_format) { case AUDIO_S8: @@ -202,6 +204,7 @@ extern "C" break; default: + valid_datatype = 0; test_format = SDL_NextAudioFormat(); break; } @@ -209,7 +212,7 @@ extern "C" format.buffer_size = spec->samples; - if (!test_format) { /* shouldn't happen, but just in case... */ + if (!valid_datatype) { /* shouldn't happen, but just in case... */ SDL_SetError("Unsupported audio format"); return (-1); } diff --git a/src/audio/dart/SDL_dart.c b/src/audio/dart/SDL_dart.c index 7455d0452..892ac712a 100644 --- a/src/audio/dart/SDL_dart.c +++ b/src/audio/dart/SDL_dart.c @@ -75,6 +75,7 @@ int DART_OpenAudio(_THIS, SDL_AudioSpec * spec) { SDL_AudioFormat test_format = SDL_FirstAudioFormat(spec->format); + int valid_datatype = 0; MCI_AMP_OPEN_PARMS AmpOpenParms; MCI_GENERIC_PARMS GenericParms; int iDeviceOrd = 0; // Default device to be used @@ -109,8 +110,9 @@ DART_OpenAudio(_THIS, SDL_AudioSpec * spec) if (spec->channels > 2) spec->channels = 2; // !!! FIXME: more than stereo support in OS/2? - while (test_format) { + while ((!valid_datatype) && (test_format)) { spec->format = test_format; + valid_datatype = 1; switch (test_format) { case AUDIO_U8: // Unsigned 8 bit audio data @@ -127,12 +129,13 @@ DART_OpenAudio(_THIS, SDL_AudioSpec * spec) // !!! FIXME: int32? default: + valid_datatype = 0; test_format = SDL_NextAudioFormat(); break; } } - if (!test_format) { // shouldn't happen, but just in case... + if (!valid_datatype) { // shouldn't happen, but just in case... // Close DART, and exit with error code! mciSendCommand(iDeviceOrd, MCI_CLOSE, MCI_WAIT, &GenericParms, 0); SDL_SetError("Unsupported audio format");