From 4b433c296118cddc8811f1c5a34a9453bad253d0 Mon Sep 17 00:00:00 2001 From: Johannes Schickel Date: Sun, 13 Nov 2011 22:25:19 +0100 Subject: [PATCH] ENGINES: Handle speech_mute in syncSoundSettings. This assures we always mute all speech sounds, when the user selects subtitles only mode. Hopefully no engine abuses the speech sound type for other sounds, since that would make them gone now too. Then again I would consider this an utter abuse of the speech sound type... --- engines/engine.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/engines/engine.cpp b/engines/engine.cpp index ee1d53fa9c7..e4e4630841e 100644 --- a/engines/engine.cpp +++ b/engines/engine.cpp @@ -479,10 +479,20 @@ void Engine::syncSoundSettings() { if (ConfMan.hasKey("mute")) mute = ConfMan.getBool("mute"); + // We need to handle the speech mute separately here. This is because the + // engine code should be able to rely on all speech sounds muted when the + // user specified subtitles only mode, which results in "speech_mute" to + // be set to "true". The global mute setting has precedence over the + // speech mute setting though. + bool speechMute = mute; + if (!speechMute) + speechMute = ConfMan.getBool("speech_mute"); + _mixer->muteSoundType(Audio::Mixer::kPlainSoundType, mute); _mixer->muteSoundType(Audio::Mixer::kMusicSoundType, mute); _mixer->muteSoundType(Audio::Mixer::kSFXSoundType, mute); - _mixer->muteSoundType(Audio::Mixer::kSpeechSoundType, mute); + _mixer->muteSoundType(Audio::Mixer::kSpeechSoundType, speechMute); + _mixer->setVolumeForSoundType(Audio::Mixer::kPlainSoundType, Audio::Mixer::kMaxMixerVolume); _mixer->setVolumeForSoundType(Audio::Mixer::kMusicSoundType, soundVolumeMusic); _mixer->setVolumeForSoundType(Audio::Mixer::kSFXSoundType, soundVolumeSFX);