From dacc06f5e8d00ace9d16a149fc41ff65323ffbb3 Mon Sep 17 00:00:00 2001 From: Jean-Michel Trivi Date: Wed, 8 Apr 2015 18:16:39 -0700 Subject: Fix AudioPolicyManager dynamic policy initialization AudioPolicyManager::getInputForAttr() is initializing the AudioMix for the new AudioInputDescriptor. The audio policy manager refactoring introduced a regression where the association of an existing AudioMix (registered when the associated AudioPolicy was registered) with the input descriptor copied a value of local scope, instead of referencing the AudioMix in the list of mixes. Bug 20081375 Change-Id: Iddd57fed8525880afd1d4a5493f97130aabe4816 --- services/audiopolicy/managerdefault/AudioPolicyManager.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'services/audiopolicy/managerdefault') diff --git a/services/audiopolicy/managerdefault/AudioPolicyManager.cpp b/services/audiopolicy/managerdefault/AudioPolicyManager.cpp index 797a2b4..67a5c80 100644 --- a/services/audiopolicy/managerdefault/AudioPolicyManager.cpp +++ b/services/audiopolicy/managerdefault/AudioPolicyManager.cpp @@ -1189,7 +1189,7 @@ status_t AudioPolicyManager::getInputForAttr(const audio_attributes_t *attr, if (inputSource == AUDIO_SOURCE_REMOTE_SUBMIX && strncmp(attr->tags, "addr=", strlen("addr=")) == 0) { - status_t ret = mPolicyMixes.getInputMixForAttr(*attr, policyMix); + status_t ret = mPolicyMixes.getInputMixForAttr(*attr, &policyMix); if (ret != NO_ERROR) { return ret; } @@ -1308,7 +1308,7 @@ status_t AudioPolicyManager::getInputForAttr(const audio_attributes_t *attr, inputDesc->mIsSoundTrigger = isSoundTrigger; inputDesc->mPolicyMix = policyMix; - ALOGV("getInputForAttr() returns input type = %d", inputType); + ALOGV("getInputForAttr() returns input type = %d", *inputType); addInput(*input, inputDesc); mpClientInterface->onAudioPortListUpdate(); @@ -3032,7 +3032,7 @@ status_t AudioPolicyManager::checkOutputsForDevice(const sp de address.string()); } policyMix->setOutput(desc); - desc->mPolicyMix = &(policyMix->getMix()); + desc->mPolicyMix = policyMix->getMix(); } else if ((desc->mFlags & AUDIO_OUTPUT_FLAG_DIRECT) == 0) { // no duplicated output for direct outputs and -- cgit v1.1