Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 29855801 authored by Eric Laurent's avatar Eric Laurent Committed by Android (Google) Code Review
Browse files

Merge "Fix issue 2428563: Camera rendered inoperable by voice call interruption."

parents 931bf89d ba8811f5
Loading
Loading
Loading
Loading
+8 −2
Original line number Diff line number Diff line
@@ -3247,7 +3247,10 @@ bool AudioFlinger::RecordThread::threadLoop()
                            if (mBytesRead < 0) {
                                LOGE("Error reading audio input");
                                if (mActiveTrack->mState == TrackBase::ACTIVE) {
                                    sleep(1);
                                    // Force input into standby so that it tries to
                                    // recover at next read attempt
                                    mInput->standby();
                                    usleep(5000);
                                }
                                mRsmpInIndex = mFrameCount;
                                framesOut = 0;
@@ -3429,7 +3432,10 @@ status_t AudioFlinger::RecordThread::getNextBuffer(AudioBufferProvider::Buffer*
        if (mBytesRead < 0) {
            LOGE("RecordThread::getNextBuffer() Error reading audio input");
            if (mActiveTrack->mState == TrackBase::ACTIVE) {
                sleep(1);
                // Force input into standby so that it tries to
                // recover at next read attempt
                mInput->standby();
                usleep(5000);
            }
            buffer->raw = 0;
            buffer->frameCount = 0;
+7 −3
Original line number Diff line number Diff line
@@ -552,13 +552,17 @@ ssize_t AudioRecord::read(void* buffer, size_t userSize)

        audioBuffer.frameCount = userSize/frameSize();

        // Calling obtainBuffer() with a negative wait count causes
        // an (almost) infinite wait time.
        status_t err = obtainBuffer(&audioBuffer, -1);
        // By using a wait count corresponding to twice the timeout period in
        // obtainBuffer() we give a chance to recover once for a read timeout
        // (if media_server crashed for instance) before returning a length of
        // 0 bytes read to the client
        status_t err = obtainBuffer(&audioBuffer, ((2 * MAX_RUN_TIMEOUT_MS) / WAIT_PERIOD_MS));
        if (err < 0) {
            // out of buffers, return #bytes written
            if (err == status_t(NO_MORE_BUFFERS))
                break;
            if (err == status_t(TIMED_OUT))
                err = 0;
            return ssize_t(err);
        }