diff options
| -rw-r--r-- | services/audioflinger/AudioFlinger.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/services/audioflinger/AudioFlinger.cpp b/services/audioflinger/AudioFlinger.cpp index 0730492..ffb00e7 100644 --- a/services/audioflinger/AudioFlinger.cpp +++ b/services/audioflinger/AudioFlinger.cpp @@ -6120,9 +6120,12 @@ bool AudioFlinger::RecordThread::threadLoop() if (!mStandby) { mInput->stream->common.standby(&mInput->stream->common); } - mActiveTrack.clear(); - mStartStopCond.broadcast(); + { + Mutex::Autolock _l(mLock); + mActiveTrack.clear(); + mStartStopCond.broadcast(); + } releaseWakeLock(); @@ -6298,7 +6301,7 @@ void AudioFlinger::RecordThread::stop(RecordThread::RecordTrack* recordTrack) { } mStartStopCond.wait(mLock); // if we have been restarted, recordTrack == mActiveTrack.get() here - if (mActiveTrack == 0 || recordTrack != mActiveTrack.get()) { + if (exitPending() || mActiveTrack == 0 || recordTrack != mActiveTrack.get()) { mLock.unlock(); AudioSystem::stopInput(mId); mLock.lock(); |
