summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMinghui Tan <mhtan@google.com>2021-07-14 16:47:50 -0700
committerMinghui Tan <mhtan@google.com>2021-07-15 22:52:18 +0000
commitbc82b4ca41ec9944a8e5d32b23d207809456e800 (patch)
tree4036a41fbf7c8d83b1c6b03605ded80947857918
parente3451b87d4da7467390383800c59eb607df123ee (diff)
downloadcamera-bc82b4ca41ec9944a8e5d32b23d207809456e800.tar.gz
Update process lock to be shared lock for flush and process.
Bug: 193368212 Fix: 193368212 Test: CTS in progress Change-Id: I21469bf7109c915347e29a2a5f6a59b28c9613fe
-rw-r--r--common/hal/google_camera_hal/realtime_zsl_request_processor.cc7
-rw-r--r--common/hal/google_camera_hal/realtime_zsl_request_processor.h3
2 files changed, 6 insertions, 4 deletions
diff --git a/common/hal/google_camera_hal/realtime_zsl_request_processor.cc b/common/hal/google_camera_hal/realtime_zsl_request_processor.cc
index 33fde51..5996a79 100644
--- a/common/hal/google_camera_hal/realtime_zsl_request_processor.cc
+++ b/common/hal/google_camera_hal/realtime_zsl_request_processor.cc
@@ -23,6 +23,7 @@
#include <utils/Trace.h>
#include <cstdint>
+#include <shared_mutex>
#include "hal_types.h"
#include "hal_utils.h"
@@ -261,7 +262,7 @@ status_t RealtimeZslRequestProcessor::SetProcessBlock(
return BAD_VALUE;
}
- std::lock_guard<std::mutex> lock(process_block_lock_);
+ std::lock_guard lock(process_block_lock_);
if (process_block_ != nullptr) {
ALOGE("%s: Already configured.", __FUNCTION__);
return ALREADY_EXISTS;
@@ -274,7 +275,7 @@ status_t RealtimeZslRequestProcessor::SetProcessBlock(
status_t RealtimeZslRequestProcessor::ProcessRequest(
const CaptureRequest& request) {
ATRACE_CALL();
- std::lock_guard<std::mutex> lock(process_block_lock_);
+ std::shared_lock lock(process_block_lock_);
if (process_block_ == nullptr) {
ALOGE("%s: Not configured yet.", __FUNCTION__);
return NO_INIT;
@@ -369,7 +370,7 @@ status_t RealtimeZslRequestProcessor::ProcessRequest(
status_t RealtimeZslRequestProcessor::Flush() {
ATRACE_CALL();
- std::lock_guard<std::mutex> lock(process_block_lock_);
+ std::shared_lock lock(process_block_lock_);
if (process_block_ == nullptr) {
return OK;
}
diff --git a/common/hal/google_camera_hal/realtime_zsl_request_processor.h b/common/hal/google_camera_hal/realtime_zsl_request_processor.h
index 760b965..b8be026 100644
--- a/common/hal/google_camera_hal/realtime_zsl_request_processor.h
+++ b/common/hal/google_camera_hal/realtime_zsl_request_processor.h
@@ -17,6 +17,7 @@
#ifndef HARDWARE_GOOGLE_CAMERA_HAL_GOOGLE_CAMERA_HAL_REALTIME_ZSL_REQUEST_PROCESSOR_H_
#define HARDWARE_GOOGLE_CAMERA_HAL_GOOGLE_CAMERA_HAL_REALTIME_ZSL_REQUEST_PROCESSOR_H_
+#include <shared_mutex>
#include "process_block.h"
#include "request_processor.h"
#include "vendor_tag_types.h"
@@ -63,7 +64,7 @@ class RealtimeZslRequestProcessor : public RequestProcessor {
private:
status_t Initialize(CameraDeviceSessionHwl* device_session_hwl);
- std::mutex process_block_lock_;
+ std::shared_mutex process_block_lock_;
// Protected by process_block_lock_.
std::unique_ptr<ProcessBlock> process_block_;