[Scummvm-cvs-logs] SF.net SVN: scummvm:[40679] scummvm/trunk/sound/wave.cpp
Kirben at users.sourceforge.net
Kirben at users.sourceforge.net
Mon May 18 12:40:22 CEST 2009
Revision: 40679
http://scummvm.svn.sourceforge.net/scummvm/?rev=40679&view=rev
Author: Kirben
Date: 2009-05-18 10:40:22 +0000 (Mon, 18 May 2009)
Log Message:
-----------
Fix crash when any movie is played in the Macintosh version of The Feebles Files, a regression caused by revision 36085.
Revision Links:
--------------
http://scummvm.svn.sourceforge.net/scummvm/?rev=36085&view=rev
Modified Paths:
--------------
scummvm/trunk/sound/wave.cpp
Modified: scummvm/trunk/sound/wave.cpp
===================================================================
--- scummvm/trunk/sound/wave.cpp 2009-05-18 09:59:54 UTC (rev 40678)
+++ scummvm/trunk/sound/wave.cpp 2009-05-18 10:40:22 UTC (rev 40679)
@@ -176,16 +176,27 @@
}
if (type == 17) { // MS IMA ADPCM
- return Audio::makeADPCMStream(stream, disposeAfterUse, size, Audio::kADPCMMSIma, rate, (flags & Audio::Mixer::FLAG_STEREO) ? 2 : 1, blockAlign);
+ Audio::AudioStream *sndStream = Audio::makeADPCMStream(stream, false, size, Audio::kADPCMMSIma, rate, (flags & Audio::Mixer::FLAG_STEREO) ? 2 : 1, blockAlign);
+ data = (byte *)malloc(size * 4);
+ assert(data);
+ size = sndStream->readBuffer((int16*)data, size * 2);
+ size *= 2; // 16bits.
+ delete sndStream;
} else if (type == 2) { // MS ADPCM
- return Audio::makeADPCMStream(stream, disposeAfterUse, size, Audio::kADPCMMS, rate, (flags & Audio::Mixer::FLAG_STEREO) ? 2 : 1, blockAlign);
+ Audio::AudioStream *sndStream = Audio::makeADPCMStream(stream, false, size, Audio::kADPCMMS, rate, (flags & Audio::Mixer::FLAG_STEREO) ? 2 : 1, blockAlign);
+ data = (byte *)malloc(size * 4);
+ assert(data);
+ size = sndStream->readBuffer((int16*)data, size * 2);
+ size *= 2; // 16bits.
+ delete sndStream;
+ } else {
+ // Plain data. Just read everything at once.
+ // TODO: More elegant would be to wrap the stream.
+ data = (byte *)malloc(size);
+ assert(data);
+ stream->read(data, size);
}
- // Plain data. Just read everything at once.
- // TODO: More elegant would be to wrap the stream.
- data = (byte *)malloc(size);
- assert(data);
- stream->read(data, size);
if (disposeAfterUse)
delete stream;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list