[Scummvm-cvs-logs] CVS: scummvm/scumm sound.cpp,1.168,1.169 string.cpp,1.148,1.149

Max Horn fingolfin at users.sourceforge.net
Tue Jul 15 15:22:16 CEST 2003


Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1:/tmp/cvs-serv20932

Modified Files:
	sound.cpp string.cpp 
Log Message:
proper fix for the small regression caused by my COMI fix last night; this also fixes bug #766382

Index: sound.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/sound.cpp,v
retrieving revision 1.168
retrieving revision 1.169
diff -u -d -r1.168 -r1.169
--- sound.cpp	15 Jul 2003 20:51:18 -0000	1.168
+++ sound.cpp	15 Jul 2003 22:21:30 -0000	1.169
@@ -560,19 +560,10 @@
 		_talk_sound_mode = 0;
 	}
 
-	if (_scumm->VAR(_scumm->VAR_TALK_ACTOR)) { //_sfxMode & 2) {
+	if ((_sfxMode & 2) && _scumm->VAR(_scumm->VAR_TALK_ACTOR)) {
 		act = _scumm->VAR(_scumm->VAR_TALK_ACTOR);
 
-		// FIXME: This was changed in the process of my COMI fixes.
-		// Problem is, 'finished' used to indicate if speech had
-		// been running but now is finished. But now, it'll be set
-		// even if there never has been any speech running (i.e. in
-		// all games which don't even use speech). This will have
-		// to be fixed properly! For now I am just disabling
-		// this for V2 games. A better fix would be to introduce a second
-		// variable which is set whenever speech is initiated, and reset
-		// when it stops (i.e. when _talkChannelHandle is 0).
-		finished = !_talkChannelHandle && (_scumm->_version > 2);
+		finished = !_talkChannelHandle;
 
 		if (act != 0 && (uint) act < 0x80 && !_scumm->_string[0].no_talk_anim) {
 			a = _scumm->derefActor(act, "processSfxQueues");
@@ -593,7 +584,6 @@
 		
 		if (finished && _scumm->_talkDelay == 0) {
 			_scumm->stopTalk();
-			_sfxMode &= ~2;
 		}
 	}
 		

Index: string.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/string.cpp,v
retrieving revision 1.148
retrieving revision 1.149
diff -u -d -r1.148 -r1.149
--- string.cpp	15 Jul 2003 21:30:53 -0000	1.148
+++ string.cpp	15 Jul 2003 22:21:30 -0000	1.149
@@ -149,13 +149,13 @@
 	if (_talkDelay)
 		return;
 
-	if (_haveMsg == 1) {
-		// FIXME: DIG and CMI never set sfxMode or any actor talk data...
-		// This hack will force the backup cutoff system to be used instead,
-		// unless the talkChannel is null (eg, this string has no sound attached)
-		if ((_gameId == GID_CMI || _gameId == GID_DIG) && _sound->_talkChannelHandle)
-			return;
+	if ((_gameId == GID_CMI || _gameId == GID_DIG) && _sound->_talkChannelHandle) {
+		// Keep the 'speech' flag in _sound->_sfxMode set as long as the
+		// _talkChannelHandle is valid.
+		_sound->_sfxMode |= 2;
+	}
 
+	if (_haveMsg == 1) {
 		if ((_sound->_sfxMode & 2) == 0)
 			stopTalk();
 		return;





More information about the Scummvm-git-logs mailing list