From 0b3d3c37a590b116e280f0ffefc26cd3d27b16fd Mon Sep 17 00:00:00 2001 From: Filippos Karapetis Date: Sat, 2 Jan 2010 19:24:52 +0000 Subject: SCI/new music code: Fixed sound patch loading when restoring a saved game svn-id: r46896 --- engines/sci/sfx/music.cpp | 3 ++- engines/sci/sfx/soundcmd.cpp | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) (limited to 'engines/sci/sfx') diff --git a/engines/sci/sfx/music.cpp b/engines/sci/sfx/music.cpp index 852321bb37..9a2549eb11 100644 --- a/engines/sci/sfx/music.cpp +++ b/engines/sci/sfx/music.cpp @@ -355,7 +355,8 @@ void SciMusic::soundInitSnd(MusicEntry *pSnd) { channelFilterMask = pSnd->soundRes->getChannelFilterMask(_pMidiDrv->getPlayMask(_soundVersion)); pSnd->pMidiParser->loadMusic(track, pSnd, channelFilterMask, _soundVersion); - pSnd->pMidiParser->jumpToTick(pSnd->ticker); // for resuming when loading + // Fast forward to the last position and perform associated events when loading + pSnd->pMidiParser->jumpToTick(pSnd->ticker, true); _mutex.unlock(); } } diff --git a/engines/sci/sfx/soundcmd.cpp b/engines/sci/sfx/soundcmd.cpp index dd23b12f9c..fe1e1a1c06 100644 --- a/engines/sci/sfx/soundcmd.cpp +++ b/engines/sci/sfx/soundcmd.cpp @@ -1007,6 +1007,8 @@ void SoundCommandParser::reconstructPlayList(int savegame_version) { #ifndef USE_OLD_MUSIC_FUNCTIONS Common::StackLock lock(_music->_mutex); + _music->resetDriver(); + const MusicList::iterator end = _music->getPlayListEnd(); for (MusicList::iterator i = _music->getPlayListStart(); i != end; ++i) { if (savegame_version < 14) { @@ -1023,7 +1025,6 @@ void SoundCommandParser::reconstructPlayList(int savegame_version) { cmdPlaySound((*i)->soundObj, 0); } - _music->resetDriver(); #endif } -- cgit v1.2.3