diff options
Diffstat (limited to 'services/audiopolicy/service')
-rw-r--r-- | services/audiopolicy/service/AudioPolicyEffects.cpp | 3 | ||||
-rw-r--r-- | services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp | 13 |
2 files changed, 11 insertions, 5 deletions
diff --git a/services/audiopolicy/service/AudioPolicyEffects.cpp b/services/audiopolicy/service/AudioPolicyEffects.cpp index f2d7f6f..725bc64 100644 --- a/services/audiopolicy/service/AudioPolicyEffects.cpp +++ b/services/audiopolicy/service/AudioPolicyEffects.cpp @@ -246,8 +246,6 @@ status_t AudioPolicyEffects::addOutputSessionEffects(audio_io_handle_t output, if (idx < 0) { procDesc = new EffectVector(audioSession); mOutputSessions.add(audioSession, procDesc); - - mAudioPolicyService->onOutputSessionEffectsUpdate(stream, audioSession, true); } else { // EffectVector is existing and we just need to increase ref count procDesc = mOutputSessions.valueAt(idx); @@ -275,6 +273,7 @@ status_t AudioPolicyEffects::addOutputSessionEffects(audio_io_handle_t output, } procDesc->setProcessorEnabled(true); + return 1; } return status; } 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, |