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

Commit 7dd4ae63 authored by Yin-Chia Yeh's avatar Yin-Chia Yeh Committed by Android (Google) Code Review
Browse files

Merge "Camera: fix deadlock" into nyc-dev

parents 34f2112a 473fad9a
Loading
Loading
Loading
Loading
+19 −10
Original line number Diff line number Diff line
@@ -2967,18 +2967,27 @@ void Camera3Device::overrideResultForPrecaptureCancel(
}

void Camera3Device::RequestThread::checkAndStopRepeatingRequest() {
    bool surfaceAbandoned = false;
    int64_t lastFrameNumber = 0;
    {
        Mutex::Autolock l(mRequestLock);
        // Check all streams needed by repeating requests are still valid. Otherwise, stop
        // repeating requests.
        for (const auto& request : mRepeatingRequests) {
            for (const auto& s : request->mOutputStreams) {
                if (s->isAbandoned()) {
                int64_t lastFrameNumber = 0;
                    surfaceAbandoned = true;
                    clearRepeatingRequestsLocked(&lastFrameNumber);
                mListener->notifyRepeatingRequestError(lastFrameNumber);
                return;
                    break;
                }
            }
            if (surfaceAbandoned) {
                break;
            }
        }
    }
    if (surfaceAbandoned) {
        mListener->notifyRepeatingRequestError(lastFrameNumber);
    }
}