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

Commit c1e01549 authored by Shuzhen Wang's avatar Shuzhen Wang Committed by Android (Google) Code Review
Browse files

Merge "Camera: Use separate lock for mStreamingRequestId" into nyc-dev

parents bb6ac182 c9ca6788
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -234,6 +234,7 @@ binder::Status CameraDeviceClient::submitRequestList(
            res = STATUS_ERROR(CameraService::ERROR_INVALID_OPERATION,
                    msg.string());
        } else {
            Mutex::Autolock idLock(mStreamingRequestIdLock);
            mStreamingRequestId = submitInfo->mRequestId;
        }
    } else {
@@ -271,6 +272,7 @@ binder::Status CameraDeviceClient::cancelRequest(
        return STATUS_ERROR(CameraService::ERROR_DISCONNECTED, "Camera device no longer alive");
    }

    Mutex::Autolock idLock(mStreamingRequestIdLock);
    if (mStreamingRequestId != requestId) {
        String8 msg = String8::format("Camera %d: Canceling request ID %d doesn't match "
                "current request ID %d", mCameraId, requestId, mStreamingRequestId);
@@ -760,6 +762,7 @@ binder::Status CameraDeviceClient::waitUntilIdle()
    }

    // FIXME: Also need check repeating burst.
    Mutex::Autolock idLock(mStreamingRequestIdLock);
    if (mStreamingRequestId != REQUEST_ID_NONE) {
        String8 msg = String8::format(
            "Camera %d: Try to waitUntilIdle when there are active streaming requests",
@@ -792,6 +795,7 @@ binder::Status CameraDeviceClient::flush(
        return STATUS_ERROR(CameraService::ERROR_DISCONNECTED, "Camera device no longer alive");
    }

    Mutex::Autolock idLock(mStreamingRequestIdLock);
    mStreamingRequestId = REQUEST_ID_NONE;
    status_t err = mDevice->flush(lastFrameNumber);
    if (err != OK) {
@@ -982,7 +986,7 @@ void CameraDeviceClient::notifyRepeatingRequestError(long lastFrameNumber) {
        remoteCb->onRepeatingRequestError(lastFrameNumber);
    }

    Mutex::Autolock icl(mBinderSerializationLock);
    Mutex::Autolock idLock(mStreamingRequestIdLock);
    mStreamingRequestId = REQUEST_ID_NONE;
}

+1 −0
Original line number Diff line number Diff line
@@ -208,6 +208,7 @@ private:

    // Streaming request ID
    int32_t mStreamingRequestId;
    Mutex mStreamingRequestIdLock;
    static const int32_t REQUEST_ID_NONE = -1;

    int32_t mRequestIdCounter;