[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