diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2023-06-22 16:50:53 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2023-06-22 16:50:53 +0000 |
commit | 235763bda6aa1156e3bbd2d7f7f17da3e01226cd (patch) | |
tree | 7a386e75a5d0bd6ac9a2f3527857e8c876dd2dda | |
parent | be2f58366a4ae12008788982054759fbee2b4c05 (diff) | |
parent | 8513c5c04b5962bff7e6e2c5ddf4b086a3a16110 (diff) |
Snap for 10316917 from 8513c5c04b5962bff7e6e2c5ddf4b086a3a16110 to tm-platform-release
Change-Id: I6e96052347551a3dced58803b2c141ed551bc84c
-rw-r--r-- | services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp b/services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp index 04aeabaa01..140cabb808 100644 --- a/services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp +++ b/services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp @@ -793,8 +793,29 @@ Status AudioPolicyService::startInput(int32_t portIdAidl) Mutex::Autolock _l(mLock); + ALOGW_IF(client->silenced, "startInput on silenced input for port %d, uid %d. Unsilencing.", + portIdAidl, + client->attributionSource.uid); + + if (client->active) { + ALOGE("Client should never be active before startInput. Uid %d port %d", + client->attributionSource.uid, portId); + finishRecording(client->attributionSource, client->attributes.source); + return binderStatusFromStatusT(INVALID_OPERATION); + } + + // Force the possibly silenced client to be unsilenced since we just called + // startRecording (i.e. we have assumed it is unsilenced). + // At this point in time, the client is inactive, so no calls to appops are sent in + // setAppState_l. + // This ensures existing clients have the same behavior as new clients (starting unsilenced). + // TODO(b/282076713) + setAppState_l(client, APP_STATE_TOP); + client->active = true; client->startTimeNs = systemTime(); + // This call updates the silenced state, and since we are active, appropriately notifies appops + // if we silence the track. updateUidStates_l(); status_t status; |