aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authordhewg2011-03-19 17:51:02 +0100
committerdhewg2011-03-19 17:58:17 +0100
commit46e397fb25faf947085349ec4daec4cfdc2cd6a8 (patch)
tree196c8f24d439a40cfcfe0442bb04e86a67e2f250 /engines
parent6650e69a3068e3b57e74f603a629c38359dbaaae (diff)
downloadscummvm-rg350-46e397fb25faf947085349ec4daec4cfdc2cd6a8.tar.gz
scummvm-rg350-46e397fb25faf947085349ec4daec4cfdc2cd6a8.tar.bz2
scummvm-rg350-46e397fb25faf947085349ec4daec4cfdc2cd6a8.zip
ENGINES: Mute kPlainSoundType in Engine::syncSoundSettings()
The "Mute all" option rarely muted all audio streams, since we have this abomination called kPlainSoundType (and there is no volume slider for this type). Both, not-really-muting, and adding yet another slider is a horrible user experience imho - especially on handheld ports. So mute this sound in the default implementation, and unmute it to the maximum volume. When an engines has a volume level settings for sounds it plays with this type, it should overwrite said member and set it there.
Diffstat (limited to 'engines')
-rw-r--r--engines/engine.cpp2
-rw-r--r--engines/engine.h9
2 files changed, 10 insertions, 1 deletions
diff --git a/engines/engine.cpp b/engines/engine.cpp
index 5ce0f99921..0e5e58bc72 100644
--- a/engines/engine.cpp
+++ b/engines/engine.cpp
@@ -430,7 +430,6 @@ int Engine::runDialog(GUI::Dialog &dialog) {
}
void Engine::syncSoundSettings() {
-
// Sync the engine with the config manager
int soundVolumeMusic = ConfMan.getInt("music_volume");
int soundVolumeSFX = ConfMan.getInt("sfx_volume");
@@ -440,6 +439,7 @@ void Engine::syncSoundSettings() {
if (ConfMan.hasKey("mute"))
mute = ConfMan.getBool("mute");
+ _mixer->setVolumeForSoundType(Audio::Mixer::kPlainSoundType, (mute ? 0 : Audio::Mixer::kMaxMixerVolume));
_mixer->setVolumeForSoundType(Audio::Mixer::kMusicSoundType, (mute ? 0 : soundVolumeMusic));
_mixer->setVolumeForSoundType(Audio::Mixer::kSFXSoundType, (mute ? 0 : soundVolumeSFX));
_mixer->setVolumeForSoundType(Audio::Mixer::kSpeechSoundType, (mute ? 0 : soundVolumeSpeech));
diff --git a/engines/engine.h b/engines/engine.h
index 508e9887ef..168a1dc2a0 100644
--- a/engines/engine.h
+++ b/engines/engine.h
@@ -163,6 +163,15 @@ public:
* Notify the engine that the sound settings in the config manager may have
* changed and that it hence should adjust any internal volume etc. values
* accordingly.
+ * The default implementation sets the volume levels of all mixer sound
+ * types according to the config entries of the active domain.
+ * When overwriting, call the default implementation first, then adjust the
+ * volumes further (if required).
+ *
+ * @note When setting volume levels, respect the "mute" config entry.
+ * @note The volume for the plain sound type is reset to the maximum
+ * volume. If the engine can associate its own value for this
+ * type, it needs to overwrite this member and set it accordingly.
* @todo find a better name for this
*/
virtual void syncSoundSettings();