aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--scumm/imuse_digi/dimuse_track.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/scumm/imuse_digi/dimuse_track.cpp b/scumm/imuse_digi/dimuse_track.cpp
index 38de38fd72..7e8711f6c0 100644
--- a/scumm/imuse_digi/dimuse_track.cpp
+++ b/scumm/imuse_digi/dimuse_track.cpp
@@ -75,8 +75,11 @@ void IMuseDigital::startSound(int soundId, const char *soundName, int soundType,
}
Track *track = _track[l];
- flushTracks();
- assert(!track->used);
+ while (track->used) {
+ // The designated track is not yet available. So, we call flushTracks()
+ // to get it processed (and thus made ready for us).
+ flushTracks();
+ }
track->pan = 64;
track->vol = volume * 1000;
track->volFadeDest = 0;