audio policy: fix input device selection
Make sure session activity count is incremented before
selecting device in startInput().
Bug: 26841909
Change-Id: I0b4867b9ad4c7a98e5eddb4f1f23c4cf075f074e
diff --git a/services/audiopolicy/managerdefault/AudioPolicyManager.cpp b/services/audiopolicy/managerdefault/AudioPolicyManager.cpp
index 74ff992..5949848 100644
--- a/services/audiopolicy/managerdefault/AudioPolicyManager.cpp
+++ b/services/audiopolicy/managerdefault/AudioPolicyManager.cpp
@@ -1638,10 +1638,14 @@
*concurrency |= API_INPUT_CONCURRENCY_CAPTURE;
}
+ // increment activity count before calling getNewInputDevice() below as only active sessions
+ // are considered for device selection
+ audioSession->changeActiveCount(1);
+
// Routing?
mInputRoutes.incRouteActivity(session);
- if (audioSession->activeCount() == 0 || mInputRoutes.hasRouteChanged(session)) {
+ if (audioSession->activeCount() == 1 || mInputRoutes.hasRouteChanged(session)) {
setInputDevice(input, getNewInputDevice(inputDesc), true /* force */);
@@ -1678,7 +1682,6 @@
ALOGV("AudioPolicyManager::startInput() input source = %d", audioSession->inputSource());
- audioSession->changeActiveCount(1);
return NO_ERROR;
}