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

m_kiewitz at users.sourceforge.net m_kiewitz at users.sourceforge.net
Sat Jun 26 12:47:38 CEST 2010


Revision: 50310
          http://scummvm.svn.sourceforge.net/scummvm/?rev=50310&view=rev
Author:   m_kiewitz
Date:     2010-06-26 10:47:38 +0000 (Sat, 26 Jun 2010)

Log Message:
-----------
SCI: dont call midiparser->stop() if paused sound gets stopped

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

Modified: scummvm/trunk/engines/sci/sound/music.cpp
===================================================================
--- scummvm/trunk/engines/sci/sound/music.cpp	2010-06-26 09:34:14 UTC (rev 50309)
+++ scummvm/trunk/engines/sci/sound/music.cpp	2010-06-26 10:47:38 UTC (rev 50310)
@@ -365,6 +365,7 @@
 }
 
 void SciMusic::soundStop(MusicEntry *pSnd) {
+	SoundStatus previousStatus = pSnd->status;
 	pSnd->status = kSoundStopped;
 	if (_soundVersion <= SCI_VERSION_0_LATE)
 		pSnd->isQueued = false;
@@ -374,7 +375,9 @@
 	if (pSnd->pMidiParser) {
 		_mutex.lock();
 		pSnd->pMidiParser->mainThreadBegin();
-		pSnd->pMidiParser->stop();
+		// We shouldn't call stop in case it's paused, otherwise we would send allNotesOff() again
+		if (previousStatus == kSoundPlaying)
+			pSnd->pMidiParser->stop();
 		freeChannels(pSnd);
 		pSnd->pMidiParser->mainThreadEnd();
 		_mutex.unlock();


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