summaryrefslogtreecommitdiffstats
path: root/services/audioflinger
diff options
context:
space:
mode:
authorGlenn Kasten <gkasten@google.com>2012-03-07 17:05:59 -0800
committerGlenn Kasten <gkasten@google.com>2012-03-07 17:05:59 -0800
commitb8f96760dcc017da4464efa873c45378de790d2c (patch)
treec76a0cd066dbe6cd39faacc00674fa0a144f8fcb /services/audioflinger
parent7ef97435971de244b37e02a2cb1be654048c2609 (diff)
downloadframeworks_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.cpp19
-rw-r--r--services/audioflinger/AudioFlinger.h5
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 {