changeset 2001:02108bfd6550

Actually, my silly logic bug was actually correct. :/
author Ryan C. Gordon <icculus@icculus.org>
date Thu, 31 Aug 2006 23:16:48 +0000
parents 8c05b048c32c
children 7590aaf89a60
files src/audio/amigaos/SDL_ahiaudio.c src/audio/baudio/SDL_beaudio.cc src/audio/dart/SDL_dart.c
diffstat 3 files changed, 15 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/src/audio/amigaos/SDL_ahiaudio.c	Thu Aug 31 23:16:23 2006 +0000
+++ b/src/audio/amigaos/SDL_ahiaudio.c	Thu Aug 31 23:16:48 2006 +0000
@@ -227,11 +227,13 @@
 {
 //      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 @@
                 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);
     }
--- a/src/audio/baudio/SDL_beaudio.cc	Thu Aug 31 23:16:23 2006 +0000
+++ b/src/audio/baudio/SDL_beaudio.cc	Thu Aug 31 23:16:48 2006 +0000
@@ -155,6 +155,7 @@
 
     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 @@
         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 @@
                     break;
 
                 default:
+                    valid_datatype = 0;
                     test_format = SDL_NextAudioFormat();
                     break;
             }
@@ -209,7 +212,7 @@
 
         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);
         }
--- a/src/audio/dart/SDL_dart.c	Thu Aug 31 23:16:23 2006 +0000
+++ b/src/audio/dart/SDL_dart.c	Thu Aug 31 23:16:48 2006 +0000
@@ -75,6 +75,7 @@
 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 @@
     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 @@
             // !!! 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");