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

Commit 1b75c5f9 authored by Emilian Peev's avatar Emilian Peev Committed by android-build-merger
Browse files

Camera: Collect result metadata in case of output buffer errors

am: c6747867

Change-Id: I4fe82bd9b8c503aef5459eeea205ddcfa77ea1f4
parents ec3c58d3 c6747867
Loading
Loading
Loading
Loading
+20 −1
Original line number Diff line number Diff line
@@ -2360,6 +2360,25 @@ void Camera3Device::removeInFlightRequestIfReadyLocked(int idx) {
    nsecs_t sensorTimestamp = request.sensorTimestamp;
    nsecs_t shutterTimestamp = request.shutterTimestamp;

    bool skipResultMetadata = false;
    if (request.requestStatus != OK) {
        switch (request.requestStatus) {
            case CAMERA3_MSG_ERROR_DEVICE:
            case CAMERA3_MSG_ERROR_REQUEST:
            case CAMERA3_MSG_ERROR_RESULT:
                skipResultMetadata = true;
                break;
            case CAMERA3_MSG_ERROR_BUFFER:
                //Result metadata should return in this case.
                skipResultMetadata = false;
                break;
            default:
                SET_ERR("Unknown error message: %d", request.requestStatus);
                skipResultMetadata = false;
                break;
        }
    }

    // Check if it's okay to remove the request from InFlightMap:
    // In the case of a successful request:
    //      all input and output buffers, all result metadata, shutter callback
@@ -2367,7 +2386,7 @@ void Camera3Device::removeInFlightRequestIfReadyLocked(int idx) {
    // In the case of a unsuccessful request:
    //      all input and output buffers arrived.
    if (request.numBuffersLeft == 0 &&
            (request.requestStatus != OK ||
            (skipResultMetadata ||
            (request.haveResultMetadata && shutterTimestamp != 0))) {
        ATRACE_ASYNC_END("frame capture", frameNumber);