diff options
author | Glenn Kasten <gkasten@google.com> | 2013-08-14 14:39:50 -0700 |
---|---|---|
committer | Glenn Kasten <gkasten@google.com> | 2013-08-16 14:10:13 -0700 |
commit | 9e98235a9e9bb870e1c76911e3b4d00386a52c39 (patch) | |
tree | 39eef4de6e3c0bba45ab950efb8431fc92694985 /services/audioflinger/Threads.cpp | |
parent | 5edadd46c76c5ff1c3edabf2ea943c2278e82e1c (diff) | |
download | frameworks_av-9e98235a9e9bb870e1c76911e3b4d00386a52c39.zip frameworks_av-9e98235a9e9bb870e1c76911e3b4d00386a52c39.tar.gz frameworks_av-9e98235a9e9bb870e1c76911e3b4d00386a52c39.tar.bz2 |
Simplify flow by having all mActiveTrack.clear() continue
Change-Id: Icd160b0aa79a747bd19fabaa7feee813afb155e0
Diffstat (limited to 'services/audioflinger/Threads.cpp')
-rw-r--r-- | services/audioflinger/Threads.cpp | 63 |
1 files changed, 32 insertions, 31 deletions
diff --git a/services/audioflinger/Threads.cpp b/services/audioflinger/Threads.cpp index 8a60b2a..44763a6 100644 --- a/services/audioflinger/Threads.cpp +++ b/services/audioflinger/Threads.cpp @@ -4244,48 +4244,49 @@ bool AudioFlinger::RecordThread::threadLoop() acquireWakeLock_l(); continue; } + if (activeTrack->isTerminated()) { removeTrack_l(activeTrack); mActiveTrack.clear(); - } else { - switch (activeTrack->mState) { - case TrackBase::PAUSING: - standby(); + continue; + } + + switch (activeTrack->mState) { + case TrackBase::PAUSING: + standby(); + mActiveTrack.clear(); + mStartStopCond.broadcast(); + doSleep = true; + continue; + + case TrackBase::RESUMING: + mStandby = false; + if (mReqChannelCount != activeTrack->channelCount()) { mActiveTrack.clear(); mStartStopCond.broadcast(); - break; - - case TrackBase::RESUMING: - if (mReqChannelCount != activeTrack->channelCount()) { + continue; + } + if (readOnce) { + mStartStopCond.broadcast(); + // record start succeeds only if first read from audio input succeeds + if (mBytesRead < 0) { mActiveTrack.clear(); - mStartStopCond.broadcast(); - } else if (readOnce) { - // record start succeeds only if first read from audio input - // succeeds - if (mBytesRead >= 0) { - activeTrack->mState = TrackBase::ACTIVE; - } else { - mActiveTrack.clear(); - } - mStartStopCond.broadcast(); + continue; } - mStandby = false; - break; - - case TrackBase::ACTIVE: - break; + activeTrack->mState = TrackBase::ACTIVE; + } + break; - case TrackBase::IDLE: - break; + case TrackBase::ACTIVE: + break; - default: - LOG_FATAL("Unexpected activeTrack->mState %d", activeTrack->mState); - } + case TrackBase::IDLE: + break; + default: + LOG_FATAL("Unexpected activeTrack->mState %d", activeTrack->mState); } - if (mActiveTrack == 0) { - continue; - } + lockEffectChains_l(effectChains); } |