summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
author Ady Abraham <adyabr@google.com> 2024-01-22 16:30:51 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2024-01-22 16:30:51 +0000
commitba2bdaa5ebbc60cfccecf38cbf378b9b2c988060 (patch)
tree9e8e3c649cf26e2d1b048343dee87e17fc9f394e /libs
parent01759208ae46249f5b0a11802af03731f375de95 (diff)
parentd6ac7795876884aa18e565ebdd1400b49acc5c64 (diff)
Merge "SF: make RenderEngineThreaded::waitUntilInitialized more efficient" into udc-qpr-dev
Diffstat (limited to 'libs')
-rw-r--r--libs/renderengine/threaded/RenderEngineThreaded.cpp6
-rw-r--r--libs/renderengine/threaded/RenderEngineThreaded.h2
2 files changed, 5 insertions, 3 deletions
diff --git a/libs/renderengine/threaded/RenderEngineThreaded.cpp b/libs/renderengine/threaded/RenderEngineThreaded.cpp
index 6a1561abcd..528115d7f6 100644
--- a/libs/renderengine/threaded/RenderEngineThreaded.cpp
+++ b/libs/renderengine/threaded/RenderEngineThreaded.cpp
@@ -127,8 +127,10 @@ void RenderEngineThreaded::threadMain(CreateInstanceFactory factory) NO_THREAD_S
}
void RenderEngineThreaded::waitUntilInitialized() const {
- std::unique_lock<std::mutex> lock(mInitializedMutex);
- mInitializedCondition.wait(lock, [=] { return mIsInitialized; });
+ if (!mIsInitialized) {
+ std::unique_lock<std::mutex> lock(mInitializedMutex);
+ mInitializedCondition.wait(lock, [this] { return mIsInitialized.load(); });
+ }
}
std::future<void> RenderEngineThreaded::primeCache() {
diff --git a/libs/renderengine/threaded/RenderEngineThreaded.h b/libs/renderengine/threaded/RenderEngineThreaded.h
index 6eb108e064..4ba26bf926 100644
--- a/libs/renderengine/threaded/RenderEngineThreaded.h
+++ b/libs/renderengine/threaded/RenderEngineThreaded.h
@@ -100,7 +100,7 @@ private:
// Used to allow select thread safe methods to be accessed without requiring the
// method to be invoked on the RenderEngine thread
- bool mIsInitialized = false;
+ std::atomic_bool mIsInitialized = false;
mutable std::mutex mInitializedMutex;
mutable std::condition_variable mInitializedCondition;