aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sound.cpp4
-rw-r--r--sound/mixer.cpp11
2 files changed, 10 insertions, 5 deletions
diff --git a/sound.cpp b/sound.cpp
index 7328d78b84..8e0fbae593 100644
--- a/sound.cpp
+++ b/sound.cpp
@@ -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++)