aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/sound/music.cpp
diff options
context:
space:
mode:
authormd52011-02-28 01:06:29 +0200
committermd52011-02-28 01:06:29 +0200
commit1dcce4445c28720cd093b6a36b376a36758138eb (patch)
tree40d72b52af289495e3031166a87f7232c4230ddf /engines/sci/sound/music.cpp
parentc7bfbc31e2f23f899dcf884ef9a9ba3a7bd0ebe8 (diff)
downloadscummvm-rg350-1dcce4445c28720cd093b6a36b376a36758138eb.tar.gz
scummvm-rg350-1dcce4445c28720cd093b6a36b376a36758138eb.tar.bz2
scummvm-rg350-1dcce4445c28720cd093b6a36b376a36758138eb.zip
SCI: Reverted rc7bfbc3 and fixed the actual cause of bug #3106107
While fast forwarding a song, disable its hold value together with any possible sound looping, so that the song won't loop forever.
Diffstat (limited to 'engines/sci/sound/music.cpp')
-rw-r--r--engines/sci/sound/music.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/engines/sci/sound/music.cpp b/engines/sci/sound/music.cpp
index a08525d760..2331f2f959 100644
--- a/engines/sci/sound/music.cpp
+++ b/engines/sci/sound/music.cpp
@@ -441,10 +441,15 @@ void SciMusic::soundPlay(MusicEntry *pSnd) {
// when loading a saved game. Fixes bug #3083151.
uint16 prevLoop = pSnd->loop;
pSnd->loop = 0;
+ // Same for hold. Fixes bug #3106107.
+ int16 prevHold = pSnd->hold;
+ pSnd->hold = -1;
// Fast forward to the last position and perform associated events when loading
pSnd->pMidiParser->jumpToTick(pSnd->ticker, true, true, true);
// Restore looping
pSnd->loop = prevLoop;
+ // Restore hold
+ pSnd->hold = prevHold;
}
pSnd->pMidiParser->mainThreadEnd();
_mutex.unlock();