Loading services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp +21 −0 Original line number Diff line number Diff line Loading @@ -818,8 +818,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; Loading Loading
services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp +21 −0 Original line number Diff line number Diff line Loading @@ -818,8 +818,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; Loading