Skip to content

Commit f64dfcc

Browse files
gkastenAndroid (Google) Code Review
authored andcommitted
Merge "Unlock effect chains in the middle of two if's"
2 parents c2dc1c4 + e20ab38 commit f64dfcc

File tree

1 file changed

+25
-13
lines changed

1 file changed

+25
-13
lines changed

services/audioflinger/AudioFlinger.cpp

Lines changed: 25 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2133,13 +2133,19 @@ bool AudioFlinger::MixerThread::threadLoop()
21332133
if (mSuspended) {
21342134
sleepTime = suspendSleepTimeUs();
21352135
}
2136-
// sleepTime == 0 means we must write to audio hardware
2136+
2137+
// only process effects if we're going to write
21372138
if (sleepTime == 0) {
21382139
for (size_t i = 0; i < effectChains.size(); i ++) {
21392140
effectChains[i]->process_l();
21402141
}
2141-
// enable changes in effect chain
2142-
unlockEffectChains(effectChains);
2142+
}
2143+
2144+
// enable changes in effect chain
2145+
unlockEffectChains(effectChains);
2146+
2147+
// sleepTime == 0 means we must write to audio hardware
2148+
if (sleepTime == 0) {
21432149
mLastWriteTime = systemTime();
21442150
mInWrite = true;
21452151
mBytesWritten += mixBufferSize;
@@ -2163,8 +2169,6 @@ bool AudioFlinger::MixerThread::threadLoop()
21632169
}
21642170
mStandby = false;
21652171
} else {
2166-
// enable changes in effect chain
2167-
unlockEffectChains(effectChains);
21682172
usleep(sleepTime);
21692173
}
21702174

@@ -2932,16 +2936,22 @@ bool AudioFlinger::DirectOutputThread::threadLoop()
29322936
if (mSuspended) {
29332937
sleepTime = suspendSleepTimeUs();
29342938
}
2935-
// sleepTime == 0 means we must write to audio hardware
2939+
2940+
// only process effects if we're going to write
29362941
if (sleepTime == 0) {
29372942
if (mixerStatus == MIXER_TRACKS_READY) {
29382943
applyVolume(leftVol, rightVol, rampVolume);
29392944
}
29402945
for (size_t i = 0; i < effectChains.size(); i ++) {
29412946
effectChains[i]->process_l();
29422947
}
2943-
unlockEffectChains(effectChains);
2948+
}
29442949

2950+
// enable changes in effect chain
2951+
unlockEffectChains(effectChains);
2952+
2953+
// sleepTime == 0 means we must write to audio hardware
2954+
if (sleepTime == 0) {
29452955
mLastWriteTime = systemTime();
29462956
mInWrite = true;
29472957
mBytesWritten += mixBufferSize;
@@ -2951,7 +2961,6 @@ bool AudioFlinger::DirectOutputThread::threadLoop()
29512961
mInWrite = false;
29522962
mStandby = false;
29532963
} else {
2954-
unlockEffectChains(effectChains);
29552964
usleep(sleepTime);
29562965
}
29572966

@@ -3195,23 +3204,26 @@ bool AudioFlinger::DuplicatingThread::threadLoop()
31953204
if (mSuspended) {
31963205
sleepTime = suspendSleepTimeUs();
31973206
}
3198-
// sleepTime == 0 means we must write to audio hardware
3207+
3208+
// only process effects if we're going to write
31993209
if (sleepTime == 0) {
32003210
for (size_t i = 0; i < effectChains.size(); i ++) {
32013211
effectChains[i]->process_l();
32023212
}
3203-
// enable changes in effect chain
3204-
unlockEffectChains(effectChains);
3213+
}
3214+
3215+
// enable changes in effect chain
3216+
unlockEffectChains(effectChains);
32053217

3218+
// sleepTime == 0 means we must write to audio hardware
3219+
if (sleepTime == 0) {
32063220
standbyTime = systemTime() + mStandbyTimeInNsecs;
32073221
for (size_t i = 0; i < outputTracks.size(); i++) {
32083222
outputTracks[i]->write(mMixBuffer, writeFrames);
32093223
}
32103224
mStandby = false;
32113225
mBytesWritten += mixBufferSize;
32123226
} else {
3213-
// enable changes in effect chain
3214-
unlockEffectChains(effectChains);
32153227
usleep(sleepTime);
32163228
}
32173229

0 commit comments

Comments
 (0)