Cleanup DirectOutputThread::mActiveTrack

Rename activeTrack to mActiveTrack.
Release the reference earlier, at the end of threadLoop_mix().
This allows the field to be made private and to
  move the declaration from PlaybackThread to DirectOutputThread.

Change-Id: I02be7a254638f7d85e92aaf0002d20ca0092a5c3
diff --git a/services/audioflinger/AudioFlinger.cpp b/services/audioflinger/AudioFlinger.cpp
index 032406e..7e7ee3f 100644
--- a/services/audioflinger/AudioFlinger.cpp
+++ b/services/audioflinger/AudioFlinger.cpp
@@ -2043,10 +2043,6 @@
 
         processConfigEvents();
 
-if (mType == DIRECT) {
-        activeTrack.clear();
-}
-
         mixerStatus = MIXER_IDLE;
         { // scope for mLock
 
@@ -2138,10 +2134,6 @@
             lockEffectChains_l(effectChains);
         }
 
-if (mType == DIRECT) {
-        // For DirectOutputThread, this test is equivalent to "activeTrack != 0"
-}
-
         if (CC_LIKELY(mixerStatus == MIXER_TRACKS_READY)) {
             threadLoop_mix();
         } else {
@@ -2196,10 +2188,6 @@
         // same lock.
         tracksToRemove.clear();
 
-// FIXME merge these
-if (mType == DIRECT) {
-        activeTrack.clear();
-}
         // FIXME I don't understand the need for this here;
         //       it was in the original code but maybe the
         //       assignment in saveOutputTracks() makes this unnecessary?
@@ -2918,7 +2906,7 @@
 
             // reset retry count
             track->mRetryCount = kMaxTrackRetriesDirect;
-            activeTrack = t;
+            mActiveTrack = t;
             mixerStatus_ = MIXER_TRACKS_READY;
         } else {
             //ALOGV("track %d u=%08x, s=%08x [NOT READY]", track->name(), cblk->user, cblk->server);
@@ -2968,7 +2956,7 @@
     // output audio to hardware
     while (frameCount) {
         buffer.frameCount = frameCount;
-        activeTrack->getNextBuffer(&buffer);
+        mActiveTrack->getNextBuffer(&buffer);
         if (CC_UNLIKELY(buffer.raw == NULL)) {
             memset(curBuf, 0, frameCount * mFrameSize);
             break;
@@ -2976,10 +2964,11 @@
         memcpy(curBuf, buffer.raw, buffer.frameCount * mFrameSize);
         frameCount -= buffer.frameCount;
         curBuf += buffer.frameCount * mFrameSize;
-        activeTrack->releaseBuffer(&buffer);
+        mActiveTrack->releaseBuffer(&buffer);
     }
     sleepTime = 0;
     standbyTime = systemTime() + standbyDelay;
+    mActiveTrack.clear();
     applyVolume();
 }
 
diff --git a/services/audioflinger/AudioFlinger.h b/services/audioflinger/AudioFlinger.h
index e26466f..d91cd60 100644
--- a/services/audioflinger/AudioFlinger.h
+++ b/services/audioflinger/AudioFlinger.h
@@ -973,8 +973,6 @@
         mixer_state mPrevMixerStatus; // previous status returned by prepareTracks_l()
         // DIRECT only
         nsecs_t                         standbyDelay;
-        // activeTrack was local to the while !exitingPending loop
-        sp<Track>                       activeTrack;
         // DUPLICATING only
         uint32_t                        writeFrames;
     };
@@ -1046,6 +1044,9 @@
 
 private:
                     void        applyVolume();  // FIXME inline into threadLoop_mix()
+
+        // prepareTracks_l() tells threadLoop_mix() the name of the single active track
+        sp<Track>               mActiveTrack;
     };
 
     class DuplicatingThread : public MixerThread {