diff options
-rw-r--r-- | sound.cpp | 4 | ||||
-rw-r--r-- | sound/mixer.cpp | 11 |
2 files changed, 10 insertions, 5 deletions
@@ -533,9 +533,13 @@ void Scumm::setupSound() void Scumm::pauseSounds(bool pause) { + /* Arisme : do not pause iMuse as this will disable synch events */ + /* the sound is really "paused" in the mixer */ + /* IMuse *se = _imuse; if (se) se->pause(pause); + */ _soundsPaused = pause; _mixer->pause(pause); } diff --git a/sound/mixer.cpp b/sound/mixer.cpp index e5677bbde0..73b793814c 100644 --- a/sound/mixer.cpp +++ b/sound/mixer.cpp @@ -110,11 +110,6 @@ int SoundMixer::play_mp3_cdtrack(PlayingSoundHandle *handle, FILE * file, mad_ti void SoundMixer::mix(int16 *buf, uint len) { - if (_paused) { - memset(buf, 0, 2 * len * sizeof(int16)); - return; - } - if (_premix_proc) { int i; _premix_proc(_premix_param, buf, len); @@ -126,6 +121,12 @@ void SoundMixer::mix(int16 *buf, uint len) memset(buf, 0, 2 * len * sizeof(int16)); } + /* Arisme : moved to let iMUSE generate the events */ + if (_paused) { + memset(buf, 0, 2 * len * sizeof(int16)); + return; + } + _syst->lock_mutex(_mutex); /* now mix all channels */ for (int i = 0; i != NUM_CHANNELS; i++) |