diff options
author | Glenn Kasten <gkasten@google.com> | 2012-03-07 17:05:59 -0800 |
---|---|---|
committer | Glenn Kasten <gkasten@google.com> | 2012-03-07 17:05:59 -0800 |
commit | b8f96760dcc017da4464efa873c45378de790d2c (patch) | |
tree | c76a0cd066dbe6cd39faacc00674fa0a144f8fcb /services/audioflinger | |
parent | 7ef97435971de244b37e02a2cb1be654048c2609 (diff) | |
download | frameworks_base-b8f96760dcc017da4464efa873c45378de790d2c.zip frameworks_base-b8f96760dcc017da4464efa873c45378de790d2c.tar.gz frameworks_base-b8f96760dcc017da4464efa873c45378de790d2c.tar.bz2 |
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
Diffstat (limited to 'services/audioflinger')
-rw-r--r-- | services/audioflinger/AudioFlinger.cpp | 19 | ||||
-rw-r--r-- | services/audioflinger/AudioFlinger.h | 5 |
2 files changed, 7 insertions, 17 deletions
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 @@ if (mType == MIXER) { processConfigEvents(); -if (mType == DIRECT) { - activeTrack.clear(); -} - mixerStatus = MIXER_IDLE; { // scope for mLock @@ -2138,10 +2134,6 @@ if (mType == MIXER) { 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 @@ if (mType == MIXER) { // 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 @@ AudioFlinger::PlaybackThread::mixer_state AudioFlinger::DirectOutputThread::prep // 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 @@ void AudioFlinger::DirectOutputThread::threadLoop_mix() // 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 @@ void AudioFlinger::DirectOutputThread::threadLoop_mix() 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 @@ public: 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 @@ public: 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 { |