audio policy: fix concurrent capture policy for virtual sources
Do not consider virtual sources when determining
lastest active capture client. As a virtual source
capturing does not silence other captures, it should not
prevent another client from being selected as the latest active.
Bug: 160820363
Bug: 161725794
Test: Verify capture with Solotester in background and projecting to
DHU.
Change-Id: I2f28026dbecfa72b5d44f52b95538fc13996627b
Merged-In: I2f28026dbecfa72b5d44f52b95538fc13996627b
(cherry picked from commit 14a88630162b96d0d52354261ee09216c0bed0d7)
diff --git a/services/audiopolicy/service/AudioPolicyService.cpp b/services/audiopolicy/service/AudioPolicyService.cpp
index e847f9f..a6e8989 100644
--- a/services/audiopolicy/service/AudioPolicyService.cpp
+++ b/services/audiopolicy/service/AudioPolicyService.cpp
@@ -488,9 +488,9 @@
}
bool isAccessibility = mUidPolicy->isA11yUid(current->uid);
- // Clients capturing for Accessibility services are not considered
+ // Clients capturing for Accessibility services or virtual sources are not considered
// for top or latest active to avoid masking regular clients started before
- if (!isAccessibility) {
+ if (!isAccessibility && !isVirtualSource(current->attributes.source)) {
bool isAssistant = mUidPolicy->isAssistantUid(current->uid);
bool isPrivacySensitive =
(current->attributes.flags & AUDIO_FLAG_CAPTURE_PRIVATE) != 0;