summaryrefslogtreecommitdiffstats
path: root/chromeos/audio
diff options
context:
space:
mode:
Diffstat (limited to 'chromeos/audio')
-rw-r--r--chromeos/audio/cras_audio_handler.cc12
1 files changed, 9 insertions, 3 deletions
diff --git a/chromeos/audio/cras_audio_handler.cc b/chromeos/audio/cras_audio_handler.cc
index f6ae05a..c6d92ec 100644
--- a/chromeos/audio/cras_audio_handler.cc
+++ b/chromeos/audio/cras_audio_handler.cc
@@ -399,8 +399,8 @@ void CrasAudioHandler::SetupAudioInputState() {
void CrasAudioHandler::SetupAudioOutputState() {
const AudioDevice* device = GetDeviceFromId(active_output_node_id_);
if (!device) {
- LOG(ERROR) << "Can't set up audio state for unknow output device id ="
- << "0x" << std::hex << active_output_node_id_;
+ LOG(ERROR) << "Can't set up audio state for unknow output device id ="
+ << "0x" << std::hex << active_output_node_id_;
return;
}
output_mute_on_ = audio_pref_handler_->GetMuteValue(*device);
@@ -417,8 +417,14 @@ void CrasAudioHandler::InitializeAudioState() {
void CrasAudioHandler::ApplyAudioPolicy() {
output_mute_locked_ = false;
if (!audio_pref_handler_->GetAudioOutputAllowedValue()) {
- SetOutputMute(true);
+ // Mute the device, but do not update the preference.
+ SetOutputMuteInternal(true);
output_mute_locked_ = true;
+ } else {
+ // Restore the mute state.
+ const AudioDevice* device = GetDeviceFromId(active_output_node_id_);
+ if (device)
+ SetOutputMuteInternal(audio_pref_handler_->GetMuteValue(*device));
}
input_mute_locked_ = false;