From 2b0c1fc0d0ad3744a32d48234f255d82a5c80ded Mon Sep 17 00:00:00 2001 From: Jean-Michel Trivi Date: Wed, 15 Apr 2015 17:29:28 -0700 Subject: AudioPolicyManager: notification of dynamic policy mix activity (input) Use ref counting on start/stop inputs to notify audio policy client of mix activity changes. Bug 20226914 Change-Id: Ic4f9c91301d0bcbc0ff749acebdc3b2300309c38 --- services/audiopolicy/managerdefault/AudioPolicyManager.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'services/audiopolicy/managerdefault') diff --git a/services/audiopolicy/managerdefault/AudioPolicyManager.cpp b/services/audiopolicy/managerdefault/AudioPolicyManager.cpp index ba9f996..266eeda 100644 --- a/services/audiopolicy/managerdefault/AudioPolicyManager.cpp +++ b/services/audiopolicy/managerdefault/AudioPolicyManager.cpp @@ -1418,6 +1418,13 @@ status_t AudioPolicyManager::startInput(audio_io_handle_t input, } if (inputDesc->mRefCount == 0) { + // if input maps to a dynamic policy with an activity listener, notify of state change + if ((inputDesc->mPolicyMix != NULL) + && ((inputDesc->mPolicyMix->mFlags & MIX_FLAG_NOTIFY_ACTIVITY) != 0)) { + mpClientInterface->onDynamicPolicyMixStateUpdate(inputDesc->mPolicyMix->mRegistrationId, + MIX_STATE_MIXING); + } + if (mInputs.activeInputsCount() == 0) { SoundTrigger::setCaptureState(true); } @@ -1471,6 +1478,12 @@ status_t AudioPolicyManager::stopInput(audio_io_handle_t input, inputDesc->mRefCount--; if (inputDesc->mRefCount == 0) { + // if input maps to a dynamic policy with an activity listener, notify of state change + if ((inputDesc->mPolicyMix != NULL) + && ((inputDesc->mPolicyMix->mFlags & MIX_FLAG_NOTIFY_ACTIVITY) != 0)) { + mpClientInterface->onDynamicPolicyMixStateUpdate(inputDesc->mPolicyMix->mRegistrationId, + MIX_STATE_IDLE); + } // automatically disable the remote submix output when input is stopped if not // used by a policy mix of type MIX_TYPE_RECORDERS -- cgit v1.1