From 3e91b5d11866599e8f33e63fb3b6c1d81ce1a1d2 Mon Sep 17 00:00:00 2001 From: Ricardo Garcia Date: Thu, 19 Feb 2015 10:54:52 -0800 Subject: Fix for getMicMute in AudioFlinger Previous logic will only check for mic state of Primary Hardware Device. Current logic checks state of all devices with valid microphone input. This is needed for audio_output feature support. bug: 19439530 Change-Id: Ibbb92412ac70cf2915bbe8660c04fbaf0ab74171 --- services/audioflinger/AudioFlinger.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'services/audioflinger') diff --git a/services/audioflinger/AudioFlinger.cpp b/services/audioflinger/AudioFlinger.cpp index 9ad437a..f3780a9 100644 --- a/services/audioflinger/AudioFlinger.cpp +++ b/services/audioflinger/AudioFlinger.cpp @@ -826,14 +826,20 @@ bool AudioFlinger::getMicMute() const if (ret != NO_ERROR) { return false; } - + bool mute = true; bool state = AUDIO_MODE_INVALID; AutoMutex lock(mHardwareLock); - audio_hw_device_t *dev = mPrimaryHardwareDev->hwDevice(); mHardwareStatus = AUDIO_HW_GET_MIC_MUTE; - dev->get_mic_mute(dev, &state); + for (size_t i = 0; i < mAudioHwDevs.size(); i++) { + audio_hw_device_t *dev = mAudioHwDevs.valueAt(i)->hwDevice(); + status_t result = dev->get_mic_mute(dev, &state); + if (result == NO_ERROR) { + mute = mute && state; + } + } mHardwareStatus = AUDIO_HW_IDLE; - return state; + + return mute; } status_t AudioFlinger::setMasterMute(bool muted) -- cgit v1.1