Camera: fix cleanupFailedRequests + HAL buffer manager path

Test: crash fixed
Bug: 120986771
Change-Id: I3f7031b0a2db30dfbdcf0522dec1c0d6dc9ab26b
gugelfrei
Yin-Chia Yeh 6 years ago
parent 6512d900a8
commit 21cb47be5a

@ -5689,18 +5689,21 @@ void Camera3Device::RequestThread::cleanUpFailedRequests(bool sendRequestError)
captureRequest->mInputStream->returnInputBuffer(captureRequest->mInputBuffer); captureRequest->mInputStream->returnInputBuffer(captureRequest->mInputBuffer);
} }
for (size_t i = 0; i < halRequest->num_output_buffers; i++) { // No output buffer can be returned when using HAL buffer manager
//Buffers that failed processing could still have if (!mUseHalBufManager) {
//valid acquire fence. for (size_t i = 0; i < halRequest->num_output_buffers; i++) {
int acquireFence = (*outputBuffers)[i].acquire_fence; //Buffers that failed processing could still have
if (0 <= acquireFence) { //valid acquire fence.
close(acquireFence); int acquireFence = (*outputBuffers)[i].acquire_fence;
outputBuffers->editItemAt(i).acquire_fence = -1; 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<size_t> (),
captureRequest->mResultExtras.frameNumber);
} }
outputBuffers->editItemAt(i).status = CAMERA3_BUFFER_STATUS_ERROR;
captureRequest->mOutputStreams.editItemAt(i)->returnBuffer((*outputBuffers)[i], 0,
/*timestampIncreasing*/true, std::vector<size_t> (),
captureRequest->mResultExtras.frameNumber);
} }
if (sendRequestError) { if (sendRequestError) {

Loading…
Cancel
Save