aboutsummaryrefslogtreecommitdiff
path: root/engines/kyra/sound_midi.cpp
diff options
context:
space:
mode:
authorathrxx2011-05-29 01:01:07 +0200
committerunknown2011-05-29 01:04:08 +0200
commitd7f877b3ab080b8e01bd6d55d2b52114dfe0f5fa (patch)
tree4ce775c78b65b493c17d3c6e1a4ac75e88d45267 /engines/kyra/sound_midi.cpp
parentc60807cbb9dec063c0b00f8d6ffdb19e83db48f3 (diff)
downloadscummvm-rg350-d7f877b3ab080b8e01bd6d55d2b52114dfe0f5fa.tar.gz
scummvm-rg350-d7f877b3ab080b8e01bd6d55d2b52114dfe0f5fa.tar.bz2
scummvm-rg350-d7f877b3ab080b8e01bd6d55d2b52114dfe0f5fa.zip
KYRA: pause midi sounds while gmm is running
Diffstat (limited to 'engines/kyra/sound_midi.cpp')
-rw-r--r--engines/kyra/sound_midi.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/engines/kyra/sound_midi.cpp b/engines/kyra/sound_midi.cpp
index 00f6c9329e..6c003d0a11 100644
--- a/engines/kyra/sound_midi.cpp
+++ b/engines/kyra/sound_midi.cpp
@@ -714,6 +714,26 @@ void SoundMidiPC::beginFadeOut() {
_fadeStartTime = _vm->_system->getMillis();
}
+void SoundMidiPC::pause(bool paused) {
+ // Stop all mixer related sounds
+ Sound::pause(paused);
+
+ Common::StackLock lock(_mutex);
+
+ if (paused) {
+ _music->setMidiDriver(0);
+ for (int i = 0; i < 3; i++)
+ _sfx[i]->setMidiDriver(0);
+ for (int i = 0; i < 16; i++)
+ _output->stopNotesOnChannel(i);
+ } else {
+ _music->setMidiDriver(_output);
+ for (int i = 0; i < 3; ++i)
+ _sfx[i]->setMidiDriver(_output);
+ // Possible TODO (IMHO unnecessary): restore notes and/or update _fadeStartTime
+ }
+}
+
void SoundMidiPC::onTimer(void *data) {
SoundMidiPC *midi = (SoundMidiPC *)data;