diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2021-07-31 03:07:29 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2021-07-31 03:07:29 +0000 |
commit | a2155aad789f58049d368861fef085c3590928f7 (patch) | |
tree | 2d25e3531cb46af58da650702e39800b001cf709 | |
parent | f0ccfdad0afde29fc458386a100e36f07768afb1 (diff) | |
parent | 03c4ce23715ccf0dae1ce18a722f4bcc99b90860 (diff) | |
download | camera-a2155aad789f58049d368861fef085c3590928f7.tar.gz |
Snap for 7599941 from 03c4ce23715ccf0dae1ce18a722f4bcc99b90860 to sc-releaseandroid-vts-12.0_r9android-vts-12.0_r8android-vts-12.0_r7android-vts-12.0_r6android-vts-12.0_r5android-vts-12.0_r4android-vts-12.0_r3android-vts-12.0_r2android-vts-12.0_r12android-vts-12.0_r11android-vts-12.0_r10android-vts-12.0_r1android-security-12.0.0_r60android-security-12.0.0_r59android-security-12.0.0_r58android-security-12.0.0_r57android-security-12.0.0_r56android-security-12.0.0_r55android-security-12.0.0_r54android-security-12.0.0_r53android-security-12.0.0_r52android-security-12.0.0_r51android-security-12.0.0_r50android-security-12.0.0_r49android-security-12.0.0_r48android-security-12.0.0_r47android-security-12.0.0_r46android-security-12.0.0_r45android-security-12.0.0_r44android-security-12.0.0_r43android-security-12.0.0_r42android-security-12.0.0_r41android-security-12.0.0_r40android-security-12.0.0_r39android-security-12.0.0_r38android-security-12.0.0_r37android-security-12.0.0_r36android-security-12.0.0_r35android-security-12.0.0_r34android-platform-12.0.0_r1android-cts-12.0_r9android-cts-12.0_r8android-cts-12.0_r7android-cts-12.0_r6android-cts-12.0_r5android-cts-12.0_r4android-cts-12.0_r3android-cts-12.0_r2android-cts-12.0_r12android-cts-12.0_r11android-cts-12.0_r10android-cts-12.0_r1android-12.0.0_r9android-12.0.0_r8android-12.0.0_r34android-12.0.0_r33android-12.0.0_r31android-12.0.0_r30android-12.0.0_r3android-12.0.0_r25android-12.0.0_r2android-12.0.0_r11android-12.0.0_r10android-12.0.0_r1android12-tests-releaseandroid12-security-releaseandroid12-s5-releaseandroid12-s4-releaseandroid12-s3-releaseandroid12-s2-releaseandroid12-s1-releaseandroid12-release
Change-Id: I952b54b77f93689b71b0548250b538da0c27ccdc
-rw-r--r-- | common/hal/utils/result_dispatcher.cc | 26 | ||||
-rw-r--r-- | common/hal/utils/result_dispatcher.h | 3 |
2 files changed, 20 insertions, 9 deletions
diff --git a/common/hal/utils/result_dispatcher.cc b/common/hal/utils/result_dispatcher.cc index bf34ede..6443e8f 100644 --- a/common/hal/utils/result_dispatcher.cc +++ b/common/hal/utils/result_dispatcher.cc @@ -228,8 +228,11 @@ status_t ResultDispatcher::AddResult(std::unique_ptr<CaptureResult> result) { failed = true; } } - - notify_callback_condition_.notify_one(); + { + std::unique_lock<std::mutex> lock(notify_callback_lock); + is_result_shutter_updated_ = true; + notify_callback_condition_.notify_one(); + } return failed ? UNKNOWN_ERROR : OK; } @@ -256,8 +259,11 @@ status_t ResultDispatcher::AddShutter(uint32_t frame_number, shutter_it->second.timestamp_ns = timestamp_ns; shutter_it->second.ready = true; - - notify_callback_condition_.notify_one(); + { + std::unique_lock<std::mutex> lock(notify_callback_lock); + is_result_shutter_updated_ = true; + notify_callback_condition_.notify_one(); + } return OK; } @@ -393,12 +399,14 @@ void ResultDispatcher::NotifyCallbackThreadLoop() { ALOGV("%s: NotifyCallbackThreadLoop exits.", __FUNCTION__); return; } - - if (notify_callback_condition_.wait_for( - lock, std::chrono::milliseconds(kCallbackThreadTimeoutMs)) == - std::cv_status::timeout) { - PrintTimeoutMessages(); + if (!is_result_shutter_updated_) { + if (notify_callback_condition_.wait_for( + lock, std::chrono::milliseconds(kCallbackThreadTimeoutMs)) == + std::cv_status::timeout) { + PrintTimeoutMessages(); + } } + is_result_shutter_updated_ = false; } } diff --git a/common/hal/utils/result_dispatcher.h b/common/hal/utils/result_dispatcher.h index ba97086..74f4b4a 100644 --- a/common/hal/utils/result_dispatcher.h +++ b/common/hal/utils/result_dispatcher.h @@ -187,6 +187,9 @@ class ResultDispatcher { // Protected by notify_callback_lock. bool notify_callback_thread_exiting = false; + + // State of callback thread is notified or not. + volatile bool is_result_shutter_updated_ = false; }; } // namespace google_camera_hal |