diff options
Diffstat (limited to 'engines/sci/sound')
-rw-r--r-- | engines/sci/sound/music.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/engines/sci/sound/music.cpp b/engines/sci/sound/music.cpp index dbbc28f25f..0dfa02c83f 100644 --- a/engines/sci/sound/music.cpp +++ b/engines/sci/sound/music.cpp @@ -399,8 +399,14 @@ void SciMusic::soundPlay(MusicEntry *pSnd) { if (pSnd->status == kSoundStopped) { pSnd->pMidiParser->jumpToTick(0); } else { + // Disable sound looping before fast forwarding to the last position, + // when loading a saved game. Fixes bug #3083151. + uint16 prevLoop = pSnd->loop; + pSnd->loop = 0; // Fast forward to the last position and perform associated events when loading pSnd->pMidiParser->jumpToTick(pSnd->ticker, true); + // Restore looping + pSnd->loop = prevLoop; } pSnd->pMidiParser->mainThreadEnd(); _mutex.unlock(); |