[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