summaryrefslogtreecommitdiffstats
path: root/services
diff options
context:
space:
mode:
Diffstat (limited to 'services')
-rw-r--r--services/audioflinger/Threads.cpp44
1 files changed, 30 insertions, 14 deletions
diff --git a/services/audioflinger/Threads.cpp b/services/audioflinger/Threads.cpp
index d6c6265..9c17574 100644
--- a/services/audioflinger/Threads.cpp
+++ b/services/audioflinger/Threads.cpp
@@ -4232,25 +4232,41 @@ bool AudioFlinger::RecordThread::threadLoop()
if (mActiveTrack->isTerminated()) {
removeTrack_l(mActiveTrack);
mActiveTrack.clear();
- } else if (mActiveTrack->mState == TrackBase::PAUSING) {
- standby();
- mActiveTrack.clear();
- mStartStopCond.broadcast();
- } else if (mActiveTrack->mState == TrackBase::RESUMING) {
- if (mReqChannelCount != mActiveTrack->channelCount()) {
+ } else {
+ switch (mActiveTrack->mState) {
+ case TrackBase::PAUSING:
+ standby();
mActiveTrack.clear();
mStartStopCond.broadcast();
- } else if (readOnce) {
- // record start succeeds only if first read from audio input
- // succeeds
- if (mBytesRead >= 0) {
- mActiveTrack->mState = TrackBase::ACTIVE;
- } else {
+ break;
+
+ case TrackBase::RESUMING:
+ if (mReqChannelCount != mActiveTrack->channelCount()) {
mActiveTrack.clear();
+ mStartStopCond.broadcast();
+ } else if (readOnce) {
+ // record start succeeds only if first read from audio input
+ // succeeds
+ if (mBytesRead >= 0) {
+ mActiveTrack->mState = TrackBase::ACTIVE;
+ } else {
+ mActiveTrack.clear();
+ }
+ mStartStopCond.broadcast();
}
- mStartStopCond.broadcast();
+ mStandby = false;
+ break;
+
+ case TrackBase::ACTIVE:
+ break;
+
+ case TrackBase::IDLE:
+ break;
+
+ default:
+ LOG_FATAL("Unexpected mActiveTrack->mState %d", mActiveTrack->mState);
}
- mStandby = false;
+
}
}
lockEffectChains_l(effectChains);