[Scummvm-cvs-logs] SF.net SVN: scummvm:[49087] scummvm/trunk/engines/sci/sound/soundcmd.cpp

m_kiewitz at users.sourceforge.net m_kiewitz at users.sourceforge.net
Tue May 18 21:59:43 CEST 2010


Revision: 49087
          http://scummvm.svn.sourceforge.net/scummvm/?rev=49087&view=rev
Author:   m_kiewitz
Date:     2010-05-18 19:59:43 +0000 (Tue, 18 May 2010)

Log Message:
-----------
SCI: set signal on fadeOut and also set signal when fade is requested but sound is not playing (& show warning in that case) - fixes iceman hang after fireworks in room 14

Modified Paths:
--------------
    scummvm/trunk/engines/sci/sound/soundcmd.cpp

Modified: scummvm/trunk/engines/sci/sound/soundcmd.cpp
===================================================================
--- scummvm/trunk/engines/sci/sound/soundcmd.cpp	2010-05-18 18:16:47 UTC (rev 49086)
+++ scummvm/trunk/engines/sci/sound/soundcmd.cpp	2010-05-18 19:59:43 UTC (rev 49087)
@@ -689,6 +689,12 @@
 		error("cmdFadeSound: unsupported argc %d", _argc);
 	}
 
+	// If sound is not playing currently, set signal directly
+	if (musicSlot->status != kSoundPlaying) {
+		warning("cmdFadeSound: fading requested, but sound is currently not playing");
+		PUT_SEL32V(_segMan, obj, SELECTOR(signal), SIGNAL_OFFSET);
+	}
+
 	debugC(2, kDebugLevelSound, "cmdFadeSound: to %d, step %d, ticker %d", musicSlot->fadeTo, musicSlot->fadeStep, musicSlot->fadeTickerStep);
 #endif
 }
@@ -856,10 +862,11 @@
 
 	if (musicSlot->fadeCompleted) {
 		musicSlot->fadeCompleted = false;
+		// We need signal for sci0 at least in iceman as well (room 14, fireworks)
+		PUT_SEL32V(_segMan, obj, SELECTOR(signal), SIGNAL_OFFSET);
 		if (_soundVersion <= SCI_VERSION_0_LATE) {
 			cmdStopSound(obj, 0);
 		} else {
-			PUT_SEL32V(_segMan, obj, SELECTOR(signal), SIGNAL_OFFSET);
 			if (musicSlot->stopAfterFading)
 				cmdStopSound(obj, 0);
 		}


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