diff options
author | Eric Laurent <elaurent@google.com> | 2013-10-01 20:58:58 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2013-10-01 20:58:58 -0700 |
commit | 34717c83733def81287e2b4ba2f62b416325c7ae (patch) | |
tree | bdc06557b16690a491298f6a73653bae249a6c84 /services/audioflinger/Effects.cpp | |
parent | cff0d41463dfa0bcb33805794f1341d029e86f04 (diff) | |
parent | 3424d6e17637e0743ddf3bf4688af8ee36e69264 (diff) | |
download | frameworks_av-34717c83733def81287e2b4ba2f62b416325c7ae.zip frameworks_av-34717c83733def81287e2b4ba2f62b416325c7ae.tar.gz frameworks_av-34717c83733def81287e2b4ba2f62b416325c7ae.tar.bz2 |
am 3424d6e1: am 1adf20ce: Merge "fix volume and effect enable delay on offloaded tracks" into klp-dev
* commit '3424d6e17637e0743ddf3bf4688af8ee36e69264':
fix volume and effect enable delay on offloaded tracks
Diffstat (limited to 'services/audioflinger/Effects.cpp')
-rw-r--r-- | services/audioflinger/Effects.cpp | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/services/audioflinger/Effects.cpp b/services/audioflinger/Effects.cpp index 7644de6..bb98a35 100644 --- a/services/audioflinger/Effects.cpp +++ b/services/audioflinger/Effects.cpp @@ -973,13 +973,20 @@ status_t AudioFlinger::EffectHandle::enable() } mEnabled = false; } else { - if (thread != 0 && !mEffect->isOffloadable()) { - if ((thread->type() == ThreadBase::OFFLOAD)) { + if (thread != 0) { + if (thread->type() == ThreadBase::OFFLOAD) { PlaybackThread *t = (PlaybackThread *)thread.get(); - t->invalidateTracks(AUDIO_STREAM_MUSIC); + Mutex::Autolock _l(t->mLock); + t->broadcast_l(); } - if (mEffect->sessionId() == AUDIO_SESSION_OUTPUT_MIX) { - thread->mAudioFlinger->onNonOffloadableGlobalEffectEnable(); + if (!mEffect->isOffloadable()) { + if (thread->type() == ThreadBase::OFFLOAD) { + PlaybackThread *t = (PlaybackThread *)thread.get(); + t->invalidateTracks(AUDIO_STREAM_MUSIC); + } + if (mEffect->sessionId() == AUDIO_SESSION_OUTPUT_MIX) { + thread->mAudioFlinger->onNonOffloadableGlobalEffectEnable(); + } } } } @@ -1010,6 +1017,11 @@ status_t AudioFlinger::EffectHandle::disable() sp<ThreadBase> thread = mEffect->thread().promote(); if (thread != 0) { thread->checkSuspendOnEffectEnabled(mEffect, false, mEffect->sessionId()); + if (thread->type() == ThreadBase::OFFLOAD) { + PlaybackThread *t = (PlaybackThread *)thread.get(); + Mutex::Autolock _l(t->mLock); + t->broadcast_l(); + } } return status; |