diff options
author | Glenn Kasten <gkasten@google.com> | 2012-02-28 07:23:42 -0800 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2012-02-28 07:23:42 -0800 |
commit | a3873833d518e032138cf70188b6f33cd7acec3d (patch) | |
tree | 2a51dc4f5028548e2217d079c595f925af7968ac /services | |
parent | 3e9c3a1d34960cd258f294d31135ab6bf76179d5 (diff) | |
parent | 04743e99e71c0da012508c7119f414027654ee94 (diff) | |
download | frameworks_av-a3873833d518e032138cf70188b6f33cd7acec3d.zip frameworks_av-a3873833d518e032138cf70188b6f33cd7acec3d.tar.gz frameworks_av-a3873833d518e032138cf70188b6f33cd7acec3d.tar.bz2 |
Merge "Unlock effect chains in the middle of two if's"
Diffstat (limited to 'services')
-rw-r--r-- | services/audioflinger/AudioFlinger.cpp | 38 |
1 files changed, 25 insertions, 13 deletions
diff --git a/services/audioflinger/AudioFlinger.cpp b/services/audioflinger/AudioFlinger.cpp index 1805096..462c2fa 100644 --- a/services/audioflinger/AudioFlinger.cpp +++ b/services/audioflinger/AudioFlinger.cpp @@ -2133,13 +2133,19 @@ bool AudioFlinger::MixerThread::threadLoop() if (mSuspended) { sleepTime = suspendSleepTimeUs(); } - // sleepTime == 0 means we must write to audio hardware + + // only process effects if we're going to write if (sleepTime == 0) { for (size_t i = 0; i < effectChains.size(); i ++) { effectChains[i]->process_l(); } - // enable changes in effect chain - unlockEffectChains(effectChains); + } + + // enable changes in effect chain + unlockEffectChains(effectChains); + + // sleepTime == 0 means we must write to audio hardware + if (sleepTime == 0) { mLastWriteTime = systemTime(); mInWrite = true; mBytesWritten += mixBufferSize; @@ -2163,8 +2169,6 @@ bool AudioFlinger::MixerThread::threadLoop() } mStandby = false; } else { - // enable changes in effect chain - unlockEffectChains(effectChains); usleep(sleepTime); } @@ -2932,7 +2936,8 @@ bool AudioFlinger::DirectOutputThread::threadLoop() if (mSuspended) { sleepTime = suspendSleepTimeUs(); } - // sleepTime == 0 means we must write to audio hardware + + // only process effects if we're going to write if (sleepTime == 0) { if (mixerStatus == MIXER_TRACKS_READY) { applyVolume(leftVol, rightVol, rampVolume); @@ -2940,8 +2945,13 @@ bool AudioFlinger::DirectOutputThread::threadLoop() for (size_t i = 0; i < effectChains.size(); i ++) { effectChains[i]->process_l(); } - unlockEffectChains(effectChains); + } + // enable changes in effect chain + unlockEffectChains(effectChains); + + // sleepTime == 0 means we must write to audio hardware + if (sleepTime == 0) { mLastWriteTime = systemTime(); mInWrite = true; mBytesWritten += mixBufferSize; @@ -2951,7 +2961,6 @@ bool AudioFlinger::DirectOutputThread::threadLoop() mInWrite = false; mStandby = false; } else { - unlockEffectChains(effectChains); usleep(sleepTime); } @@ -3195,14 +3204,19 @@ bool AudioFlinger::DuplicatingThread::threadLoop() if (mSuspended) { sleepTime = suspendSleepTimeUs(); } - // sleepTime == 0 means we must write to audio hardware + + // only process effects if we're going to write if (sleepTime == 0) { for (size_t i = 0; i < effectChains.size(); i ++) { effectChains[i]->process_l(); } - // enable changes in effect chain - unlockEffectChains(effectChains); + } + + // enable changes in effect chain + unlockEffectChains(effectChains); + // sleepTime == 0 means we must write to audio hardware + if (sleepTime == 0) { standbyTime = systemTime() + mStandbyTimeInNsecs; for (size_t i = 0; i < outputTracks.size(); i++) { outputTracks[i]->write(mMixBuffer, writeFrames); @@ -3210,8 +3224,6 @@ bool AudioFlinger::DuplicatingThread::threadLoop() mStandby = false; mBytesWritten += mixBufferSize; } else { - // enable changes in effect chain - unlockEffectChains(effectChains); usleep(sleepTime); } |