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

thebluegr at users.sourceforge.net thebluegr at users.sourceforge.net
Tue Dec 29 01:22:40 CET 2009


Revision: 46697
          http://scummvm.svn.sourceforge.net/scummvm/?rev=46697&view=rev
Author:   thebluegr
Date:     2009-12-29 00:22:39 +0000 (Tue, 29 Dec 2009)

Log Message:
-----------
SCI/new music code: cmdPauseHandle/cmdResumeHandle now work for SCI0 games

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

Modified: scummvm/trunk/engines/sci/sfx/soundcmd.cpp
===================================================================
--- scummvm/trunk/engines/sci/sfx/soundcmd.cpp	2009-12-28 23:37:04 UTC (rev 46696)
+++ scummvm/trunk/engines/sci/sfx/soundcmd.cpp	2009-12-29 00:22:39 UTC (rev 46697)
@@ -516,6 +516,7 @@
 	else
 		changeHandleStatus(obj, value ? SOUND_STATUS_SUSPENDED : SOUND_STATUS_PLAYING);
 #else
+
 	MusicEntry *musicSlot = NULL;
 	MusicList::iterator slotLoop = NULL;
 
@@ -532,7 +533,7 @@
 
 	do {
 		if (_soundVersion <= SCI_VERSION_0_LATE) {
-			PUT_SEL32V(_segMan, obj, state, kSoundPaused);
+			PUT_SEL32V(_segMan, musicSlot->soundObj, state, kSoundPaused);
 			_music->soundPause(musicSlot);
 		} else {
 			if (value)
@@ -558,14 +559,30 @@
 #ifdef USE_OLD_MUSIC_FUNCTIONS
 	changeHandleStatus(obj, SOUND_STATUS_PLAYING);
 #else
-	MusicEntry *musicSlot = _music->getSlot(obj);
-	if (!musicSlot) {
-		warning("cmdResumeHandle: Slot not found");
-		return;
+	MusicEntry *musicSlot = NULL;
+	MusicList::iterator slotLoop = NULL;
+
+	if (!obj.segment) {
+		slotLoop = _music->enumPlayList(NULL);
+		musicSlot = *slotLoop;
+	} else {
+		musicSlot = _music->getSlot(obj);
+		if (!musicSlot) {
+			warning("cmdResumeHandle: Slot not found");
+			return;
+		}
 	}
 
-	PUT_SEL32V(_segMan, obj, state, kSoundPlaying);
-	_music->soundResume(musicSlot);
+	do {
+		PUT_SEL32V(_segMan, musicSlot->soundObj, state, kSoundPlaying);
+		_music->soundResume(musicSlot);
+
+		if (slotLoop) {
+			slotLoop = _music->enumPlayList(slotLoop);
+			if (slotLoop)
+				musicSlot = *slotLoop;
+		}
+	} while (slotLoop);
 #endif
 }
 


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