@@ -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