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