diff options
author | Minghui Tan <mhtan@google.com> | 2021-07-14 16:47:50 -0700 |
---|---|---|
committer | Minghui Tan <mhtan@google.com> | 2021-07-15 22:52:18 +0000 |
commit | bc82b4ca41ec9944a8e5d32b23d207809456e800 (patch) | |
tree | 4036a41fbf7c8d83b1c6b03605ded80947857918 | |
parent | e3451b87d4da7467390383800c59eb607df123ee (diff) | |
download | camera-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.cc | 7 | ||||
-rw-r--r-- | common/hal/google_camera_hal/realtime_zsl_request_processor.h | 3 |
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_; |