diff options
author | athrxx | 2011-05-29 01:01:07 +0200 |
---|---|---|
committer | unknown | 2011-05-29 01:04:08 +0200 |
commit | d7f877b3ab080b8e01bd6d55d2b52114dfe0f5fa (patch) | |
tree | 4ce775c78b65b493c17d3c6e1a4ac75e88d45267 /engines/kyra/sound_midi.cpp | |
parent | c60807cbb9dec063c0b00f8d6ffdb19e83db48f3 (diff) | |
download | scummvm-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.cpp | 20 |
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; |