aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorFilippos Karapetis2011-08-26 11:29:13 +0300
committerFilippos Karapetis2011-08-26 11:30:19 +0300
commit4f3b85f4efc05affb7b4a7080e349360a3352048 (patch)
treeadb7115f16ee3586aed119fa4159b48803d93031 /engines
parentcdc86c6f67c62f2c9db05501f7e31cd257952566 (diff)
downloadscummvm-rg350-4f3b85f4efc05affb7b4a7080e349360a3352048.tar.gz
scummvm-rg350-4f3b85f4efc05affb7b4a7080e349360a3352048.tar.bz2
scummvm-rg350-4f3b85f4efc05affb7b4a7080e349360a3352048.zip
SCI: Fixed bug #3311911 - "SCI: QFG3: Intro music abruptly stops"
Diffstat (limited to 'engines')
-rw-r--r--engines/sci/sound/midiparser_sci.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/engines/sci/sound/midiparser_sci.cpp b/engines/sci/sound/midiparser_sci.cpp
index 95b165468d..f48a68dc66 100644
--- a/engines/sci/sound/midiparser_sci.cpp
+++ b/engines/sci/sound/midiparser_sci.cpp
@@ -626,7 +626,11 @@ void MidiParser_SCI::parseNextEvent(EventInfo &info) {
if (info.ext.type == 0x2F) {// end of track reached
if (_pSnd->loop)
_pSnd->loop--;
- if (_pSnd->loop) {
+ // QFG3 abuses the hold flag. Its scripts call kDoSoundSetHold,
+ // but sometimes there's no hold marker in the associated songs
+ // (e.g. song 110, during the intro). The original interpreter
+ // treats this case as an infinite loop (bug #3311911).
+ if (_pSnd->loop || _pSnd->hold > 0) {
// We need to play it again...
jumpToTick(_loopTick);
} else {