summaryrefslogtreecommitdiffstats
path: root/services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp
diff options
context:
space:
mode:
authorSteve Kondik <steve@cyngn.com>2016-04-03 11:50:58 -0700
committerSteve Kondik <shade@chemlab.org>2016-04-05 14:30:26 -0700
commite13b58b988ab642d4ae5ca6d0a89013510714956 (patch)
tree4b1233a4572c9f99b483c16a1b5193b0fb2f3d85 /services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp
parent1ea1107de83c91b54f633640854bcb363516a44b (diff)
downloadframeworks_av-e13b58b988ab642d4ae5ca6d0a89013510714956.zip
frameworks_av-e13b58b988ab642d4ae5ca6d0a89013510714956.tar.gz
frameworks_av-e13b58b988ab642d4ae5ca6d0a89013510714956.tar.bz2
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
Diffstat (limited to 'services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp')
-rw-r--r--services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp13
1 files changed, 10 insertions, 3 deletions
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,