[Scummvm-cvs-logs] CVS: scummvm/scumm sound.cpp,1.21,1.22
James Brown
ender at users.sourceforge.net
Wed Oct 2 03:13:39 CEST 2002
Update of /cvsroot/scummvm/scummvm/scumm
In directory usw-pr-cvs1:/tmp/cvs-serv16220/scumm
Modified Files:
sound.cpp
Log Message:
Fix 'isSoundRunning' for Creative samples (eg, Full Throttle)
Index: sound.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/sound.cpp,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -d -r1.21 -r1.22
--- sound.cpp 30 Sep 2002 22:59:42 -0000 1.21
+++ sound.cpp 2 Oct 2002 10:12:19 -0000 1.22
@@ -234,9 +234,9 @@
return;
}
else if (READ_UINT32_UNALIGNED(ptr) == MKID('Crea')) {
- char * sound = read_creative_voc_file(ptr, size, rate);
- if(sound != NULL) {
- _scumm->_mixer->playRaw(NULL, sound, size, rate, SoundMixer::FLAG_UNSIGNED | SoundMixer::FLAG_AUTOFREE);
+ char * sounddata = read_creative_voc_file(ptr, size, rate);
+ if(sounddata != NULL) {
+ _scumm->_mixer->playRaw(NULL, sounddata, size, rate, SoundMixer::FLAG_UNSIGNED | SoundMixer::FLAG_AUTOFREE, sound);
}
return;
}
@@ -553,6 +553,15 @@
if (_scumm->_imuseDigital) {
return _scumm->_imuseDigital->getSoundStatus(sound);
}
+
+ // Check raw mixer channels, to make sure we're not playing an exotic
+ // sound type manually.
+ for (int i = 0; i < _scumm->_mixer->NUM_CHANNELS; i++) {
+ if (_scumm->_mixer->_channels[i] && (_scumm->_mixer->_channels[i]->_id == sound)) {
+ return 1;
+ }
+ }
+
se = _scumm->_imuse;
if (!se)
return 0;
More information about the Scummvm-git-logs
mailing list