summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2021-07-31 03:07:29 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2021-07-31 03:07:29 +0000
commita2155aad789f58049d368861fef085c3590928f7 (patch)
tree2d25e3531cb46af58da650702e39800b001cf709
parentf0ccfdad0afde29fc458386a100e36f07768afb1 (diff)
parent03c4ce23715ccf0dae1ce18a722f4bcc99b90860 (diff)
downloadcamera-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.cc26
-rw-r--r--common/hal/utils/result_dispatcher.h3
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