[Scummvm-cvs-logs] CVS: scummvm/backends/sdl sdl.cpp,1.83,1.84
Torbjörn Andersson
eriktorbjorn at users.sourceforge.net
Tue Jun 7 07:43:54 CEST 2005
Update of /cvsroot/scummvm/scummvm/backends/sdl
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8669
Modified Files:
sdl.cpp
Log Message:
Be less prone to crash on really, really stupid output sample rates.
Added warning message if SDL_OpenAudio() fails. Might help diagnosing bug
reports like #1206314.
Index: sdl.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/backends/sdl/sdl.cpp,v
retrieving revision 1.83
retrieving revision 1.84
diff -u -d -r1.83 -r1.84
--- sdl.cpp 19 Apr 2005 20:22:50 -0000 1.83
+++ sdl.cpp 7 Jun 2005 14:43:12 -0000 1.84
@@ -278,19 +278,22 @@
memset(&desired, 0, sizeof(desired));
+ _samplesPerSec = 0;
+
if (ConfMan.hasKey("output_rate"))
_samplesPerSec = ConfMan.getInt("output_rate");
- else
+
+ if (_samplesPerSec <= 0)
_samplesPerSec = SAMPLES_PER_SEC;
// Originally, we always used 2048 samples. This loop will produce the
// same result at 22050 Hz, and should hopefully produce something
// sensible for other frequencies. Note that it must be a power of two.
- uint16 samples = 0x8000;
+ uint32 samples = 0x8000;
for (;;) {
- if (samples / (_samplesPerSec / 1000) < 100)
+ if ((1000 * samples) / _samplesPerSec < 100)
break;
samples >>= 1;
}
@@ -298,10 +301,11 @@
desired.freq = _samplesPerSec;
desired.format = AUDIO_S16SYS;
desired.channels = 2;
- desired.samples = samples;
+ desired.samples = (uint16)samples;
desired.callback = proc;
desired.userdata = param;
if (SDL_OpenAudio(&desired, &obtained) != 0) {
+ warning("Could not open audio device: %s", SDL_GetError());
return false;
}
// Note: This should be the obtained output rate, but it seems that at
More information about the Scummvm-git-logs
mailing list