Unlock effect chains in the middle of two if's

As part of the upcoming threadLoop() merge, this CL makes it clearer
what are the similar and different parts before and after unlocking
effect chains.

In each threadLoop(), the old code was:

    if (sleepTime == 0) {
        // A
        unlockEffectChains(effectChains);
        // B
    } else {
        unlockEffectChains(effectChains);
        // C
    }

The new code is:

    if (sleepTime == 0) {
        // A
    }
    unlockEffectChains(effectChains);
    if (sleepTime == 0) {
        // B
    } else {
        // C
    }

Also this is slightly slower by one "if", it has the advantage of making
it much more obvious about what is done before and after the unlock,
and also to see the similarities and differences among the various
copies of threadLoop().

Change-Id: I7bf4369d2dcb072573ec43b7e52c637f0097dc00
This commit is contained in:
Glenn Kasten
2012-02-24 11:20:09 -08:00
parent be3835c64d
commit e20ab3811a

View File

@@ -2111,13 +2111,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;
@@ -2141,8 +2147,6 @@ bool AudioFlinger::MixerThread::threadLoop()
}
mStandby = false;
} else {
// enable changes in effect chain
unlockEffectChains(effectChains);
usleep(sleepTime);
}
@@ -2920,7 +2924,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);
@@ -2928,8 +2933,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;
@@ -2939,7 +2949,6 @@ bool AudioFlinger::DirectOutputThread::threadLoop()
mInWrite = false;
mStandby = false;
} else {
unlockEffectChains(effectChains);
usleep(sleepTime);
}
@@ -3191,14 +3200,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);
@@ -3206,8 +3220,6 @@ bool AudioFlinger::DuplicatingThread::threadLoop()
mStandby = false;
mBytesWritten += mixBufferSize;
} else {
// enable changes in effect chain
unlockEffectChains(effectChains);
usleep(sleepTime);
}