From e13b58b988ab642d4ae5ca6d0a89013510714956 Mon Sep 17 00:00:00 2001 From: Steve Kondik Date: Sun, 3 Apr 2016 11:50:58 -0700 Subject: audio: Send effect session notifications after startOutput success * Because we get a hellish firestorm during offload fallback, and our effects library really dislikes this. Change-Id: I22adb55d04502eedf03ce22f35f8b9f61de1c7b0 --- services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp') diff --git a/services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp b/services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp index c0d3866..766012e 100644 --- a/services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp +++ b/services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp @@ -206,15 +206,22 @@ status_t AudioPolicyService::doStartOutput(audio_io_handle_t output, Mutex::Autolock _l(mLock); audioPolicyEffects = mAudioPolicyEffects; } + + status_t status = NO_ERROR; if (audioPolicyEffects != 0) { // create audio processors according to stream - status_t status = audioPolicyEffects->addOutputSessionEffects(output, stream, session); - if (status != NO_ERROR && status != ALREADY_EXISTS) { + status = audioPolicyEffects->addOutputSessionEffects(output, stream, session); + if (status <= 0 && (status != NO_ERROR && status != ALREADY_EXISTS)) { ALOGW("Failed to add effects on session %d", session); } } Mutex::Autolock _l(mLock); - return mAudioPolicyManager->startOutput(output, stream, session); + status_t status2 = mAudioPolicyManager->startOutput(output, stream, session); + + if (audioPolicyEffects != 0 && status > 0 && status2 == NO_ERROR) { + onOutputSessionEffectsUpdate(stream, session, true); + } + return status2; } status_t AudioPolicyService::stopOutput(audio_io_handle_t output, -- cgit v1.1