diff --git a/services/camera/libcameraservice/device3/Camera3Device.cpp b/services/camera/libcameraservice/device3/Camera3Device.cpp index 99b804394a..82dfc0fba9 100644 --- a/services/camera/libcameraservice/device3/Camera3Device.cpp +++ b/services/camera/libcameraservice/device3/Camera3Device.cpp @@ -5689,18 +5689,21 @@ void Camera3Device::RequestThread::cleanUpFailedRequests(bool sendRequestError) captureRequest->mInputStream->returnInputBuffer(captureRequest->mInputBuffer); } - for (size_t i = 0; i < halRequest->num_output_buffers; i++) { - //Buffers that failed processing could still have - //valid acquire fence. - int acquireFence = (*outputBuffers)[i].acquire_fence; - if (0 <= acquireFence) { - close(acquireFence); - outputBuffers->editItemAt(i).acquire_fence = -1; + // No output buffer can be returned when using HAL buffer manager + if (!mUseHalBufManager) { + for (size_t i = 0; i < halRequest->num_output_buffers; i++) { + //Buffers that failed processing could still have + //valid acquire fence. + int acquireFence = (*outputBuffers)[i].acquire_fence; + if (0 <= acquireFence) { + close(acquireFence); + outputBuffers->editItemAt(i).acquire_fence = -1; + } + outputBuffers->editItemAt(i).status = CAMERA3_BUFFER_STATUS_ERROR; + captureRequest->mOutputStreams.editItemAt(i)->returnBuffer((*outputBuffers)[i], 0, + /*timestampIncreasing*/true, std::vector (), + captureRequest->mResultExtras.frameNumber); } - outputBuffers->editItemAt(i).status = CAMERA3_BUFFER_STATUS_ERROR; - captureRequest->mOutputStreams.editItemAt(i)->returnBuffer((*outputBuffers)[i], 0, - /*timestampIncreasing*/true, std::vector (), - captureRequest->mResultExtras.frameNumber); } if (sendRequestError) {