From 9e688c0d8a9143cc8782f772493ed95b51b31114 Mon Sep 17 00:00:00 2001 From: vincechiu Date: Tue, 2 Jun 2020 13:15:02 +0800 Subject: camera: Erase pending result only when publish result to FWK For dummy buffer case, it will lost metadata publish if output and metadata callback at the same time. Moving the pending result erase to make sure metadata publish successfully. Bug: 155597206 Bug: 157879027 Test: GCA, CTS Change-Id: I7f81ed62f8434590e3be3e1f49f3192ed3c42813 --- common/hal/google_camera_hal/camera_device_session.cc | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/common/hal/google_camera_hal/camera_device_session.cc b/common/hal/google_camera_hal/camera_device_session.cc index 75d024d..421f233 100644 --- a/common/hal/google_camera_hal/camera_device_session.cc +++ b/common/hal/google_camera_hal/camera_device_session.cc @@ -115,10 +115,6 @@ status_t CameraDeviceSession::UpdatePendingRequest(CaptureResult* result) { return BAD_VALUE; } - if (result->result_metadata) { - pending_results_.erase(result->frame_number); - } - if (result->output_buffers.empty()) { // Nothing to do if the result doesn't contain any output buffers. return OK; @@ -211,6 +207,11 @@ void CameraDeviceSession::ProcessCaptureResult( buffers.insert(buffers.end(), result->output_buffers.begin(), result->output_buffers.end()); + if (result->result_metadata) { + std::lock_guard lock(request_record_lock_); + pending_results_.erase(result->frame_number); + } + { std::shared_lock lock(session_callback_lock_); session_callback_.process_capture_result(std::move(result)); -- cgit v1.2.3