Loading services/audiopolicy/managerdefault/AudioPolicyManager.cpp +12 −2 Original line number Diff line number Diff line Loading @@ -4020,6 +4020,7 @@ status_t AudioPolicyManager::registerPolicyMixes(const Vector<AudioMix>& mixes) bool checkOutputs = false; sp<HwModule> rSubmixModule; Vector<AudioMix> registeredMixes; AudioDeviceTypeAddrVector devices; // examine each mix's route type for (size_t i = 0; i < mixes.size(); i++) { AudioMix mix = mixes[i]; Loading Loading @@ -4143,6 +4144,7 @@ status_t AudioPolicyManager::registerPolicyMixes(const Vector<AudioMix>& mixes) break; } else { checkOutputs = true; devices.push_back(AudioDeviceTypeAddr(mix.mDeviceType, mix.mDeviceAddress.c_str())); registeredMixes.add(mix); } } Loading @@ -4158,7 +4160,10 @@ status_t AudioPolicyManager::registerPolicyMixes(const Vector<AudioMix>& mixes) } } else if (checkOutputs) { checkForDeviceAndOutputChanges(); updateCallAndOutputRouting(); changeOutputDevicesMuteState(devices); updateCallAndOutputRouting(false /* forceVolumeReeval */, 0 /* delayMs */, true /* skipDelays */); changeOutputDevicesMuteState(devices); } return res; } Loading @@ -4169,6 +4174,7 @@ status_t AudioPolicyManager::unregisterPolicyMixes(Vector<AudioMix> mixes) status_t res = NO_ERROR; bool checkOutputs = false; sp<HwModule> rSubmixModule; AudioDeviceTypeAddrVector devices; // examine each mix's route type for (const auto& mix : mixes) { if ((mix.mRouteFlags & MIX_ROUTE_FLAG_LOOP_BACK) == MIX_ROUTE_FLAG_LOOP_BACK) { Loading Loading @@ -4216,6 +4222,7 @@ status_t AudioPolicyManager::unregisterPolicyMixes(Vector<AudioMix> mixes) res = INVALID_OPERATION; continue; } else { devices.push_back(AudioDeviceTypeAddr(mix.mDeviceType, mix.mDeviceAddress.c_str())); checkOutputs = true; } } Loading @@ -4223,7 +4230,10 @@ status_t AudioPolicyManager::unregisterPolicyMixes(Vector<AudioMix> mixes) if (res == NO_ERROR && checkOutputs) { checkForDeviceAndOutputChanges(); updateCallAndOutputRouting(); changeOutputDevicesMuteState(devices); updateCallAndOutputRouting(false /* forceVolumeReeval */, 0 /* delayMs */, true /* skipDelays */); changeOutputDevicesMuteState(devices); } return res; } Loading Loading
services/audiopolicy/managerdefault/AudioPolicyManager.cpp +12 −2 Original line number Diff line number Diff line Loading @@ -4020,6 +4020,7 @@ status_t AudioPolicyManager::registerPolicyMixes(const Vector<AudioMix>& mixes) bool checkOutputs = false; sp<HwModule> rSubmixModule; Vector<AudioMix> registeredMixes; AudioDeviceTypeAddrVector devices; // examine each mix's route type for (size_t i = 0; i < mixes.size(); i++) { AudioMix mix = mixes[i]; Loading Loading @@ -4143,6 +4144,7 @@ status_t AudioPolicyManager::registerPolicyMixes(const Vector<AudioMix>& mixes) break; } else { checkOutputs = true; devices.push_back(AudioDeviceTypeAddr(mix.mDeviceType, mix.mDeviceAddress.c_str())); registeredMixes.add(mix); } } Loading @@ -4158,7 +4160,10 @@ status_t AudioPolicyManager::registerPolicyMixes(const Vector<AudioMix>& mixes) } } else if (checkOutputs) { checkForDeviceAndOutputChanges(); updateCallAndOutputRouting(); changeOutputDevicesMuteState(devices); updateCallAndOutputRouting(false /* forceVolumeReeval */, 0 /* delayMs */, true /* skipDelays */); changeOutputDevicesMuteState(devices); } return res; } Loading @@ -4169,6 +4174,7 @@ status_t AudioPolicyManager::unregisterPolicyMixes(Vector<AudioMix> mixes) status_t res = NO_ERROR; bool checkOutputs = false; sp<HwModule> rSubmixModule; AudioDeviceTypeAddrVector devices; // examine each mix's route type for (const auto& mix : mixes) { if ((mix.mRouteFlags & MIX_ROUTE_FLAG_LOOP_BACK) == MIX_ROUTE_FLAG_LOOP_BACK) { Loading Loading @@ -4216,6 +4222,7 @@ status_t AudioPolicyManager::unregisterPolicyMixes(Vector<AudioMix> mixes) res = INVALID_OPERATION; continue; } else { devices.push_back(AudioDeviceTypeAddr(mix.mDeviceType, mix.mDeviceAddress.c_str())); checkOutputs = true; } } Loading @@ -4223,7 +4230,10 @@ status_t AudioPolicyManager::unregisterPolicyMixes(Vector<AudioMix> mixes) if (res == NO_ERROR && checkOutputs) { checkForDeviceAndOutputChanges(); updateCallAndOutputRouting(); changeOutputDevicesMuteState(devices); updateCallAndOutputRouting(false /* forceVolumeReeval */, 0 /* delayMs */, true /* skipDelays */); changeOutputDevicesMuteState(devices); } return res; } Loading