aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/sfx/soundcmd.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/sci/sfx/soundcmd.cpp')
-rw-r--r--engines/sci/sfx/soundcmd.cpp16
1 files changed, 6 insertions, 10 deletions
diff --git a/engines/sci/sfx/soundcmd.cpp b/engines/sci/sfx/soundcmd.cpp
index f7ff987838..e8e599bc5c 100644
--- a/engines/sci/sfx/soundcmd.cpp
+++ b/engines/sci/sfx/soundcmd.cpp
@@ -803,16 +803,7 @@ void SoundCommandParser::cmdUpdateCues(reg_t obj, int16 value) {
}
break;
case SIGNAL_OFFSET:
- // Check if this signal is the end of the track or the end of fading effect.
- // If this came from a fading effect, don't stop the track here, it'll be stopped
- // by the engine scripts
- if (musicSlot->fadeSetVolume) {
- musicSlot->fadeSetVolume = false;
- // Notify the game scripts that music fading is done
- PUT_SEL32V(_segMan, obj, signal, SIGNAL_OFFSET);
- } else {
- cmdStopSound(obj, 0);
- }
+ cmdStopSound(obj, 0);
break;
default:
// Sync the signal of the sound object
@@ -821,6 +812,11 @@ void SoundCommandParser::cmdUpdateCues(reg_t obj, int16 value) {
}
}
+ if (musicSlot->fadeCompleted) {
+ musicSlot->fadeCompleted = false;
+ PUT_SEL32V(_segMan, obj, signal, SIGNAL_OFFSET);
+ }
+
// Sync loop selector for SCI0
if (_soundVersion <= SCI_VERSION_0_LATE)
PUT_SEL32V(_segMan, obj, loop, musicSlot->loop);