summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2020-06-22 16:40:26 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2020-06-22 16:40:26 +0000
commitc8f2d9717489bb64955dd7ea809bc9e6e2814d0a (patch)
tree3151f3310f1b23fd924884f26eecebd9e6b62423
parenta0758a8a3d599eda4d0e451385adda3d3e400b94 (diff)
parent209500045607e6a7d363ee5c1010478a058c3e0a (diff)
Merge "SF: Guard Power HAL access with lock" into rvc-dev
-rw-r--r--services/surfaceflinger/DisplayHardware/PowerAdvisor.cpp2
-rw-r--r--services/surfaceflinger/DisplayHardware/PowerAdvisor.h7
2 files changed, 7 insertions, 2 deletions
diff --git a/services/surfaceflinger/DisplayHardware/PowerAdvisor.cpp b/services/surfaceflinger/DisplayHardware/PowerAdvisor.cpp
index 1d8179c9ac..4b4c050f8e 100644
--- a/services/surfaceflinger/DisplayHardware/PowerAdvisor.cpp
+++ b/services/surfaceflinger/DisplayHardware/PowerAdvisor.cpp
@@ -85,6 +85,7 @@ void PowerAdvisor::setExpensiveRenderingExpected(DisplayId displayId, bool expec
const bool expectsExpensiveRendering = !mExpensiveDisplays.empty();
if (mNotifiedExpensiveRendering != expectsExpensiveRendering) {
+ std::lock_guard lock(mPowerHalMutex);
HalWrapper* const halWrapper = getPowerHal();
if (halWrapper == nullptr) {
return;
@@ -108,6 +109,7 @@ void PowerAdvisor::notifyDisplayUpdateImminent() {
}
if (mSendUpdateImminent.load()) {
+ std::lock_guard lock(mPowerHalMutex);
HalWrapper* const halWrapper = getPowerHal();
if (halWrapper == nullptr) {
return;
diff --git a/services/surfaceflinger/DisplayHardware/PowerAdvisor.h b/services/surfaceflinger/DisplayHardware/PowerAdvisor.h
index 34e63e725b..95eb0e2bb7 100644
--- a/services/surfaceflinger/DisplayHardware/PowerAdvisor.h
+++ b/services/surfaceflinger/DisplayHardware/PowerAdvisor.h
@@ -19,6 +19,8 @@
#include <atomic>
#include <unordered_set>
+#include <utils/Mutex.h>
+
#include "../Scheduler/OneShotTimer.h"
#include "DisplayIdentification.h"
@@ -56,10 +58,11 @@ public:
void notifyDisplayUpdateImminent() override;
private:
- HalWrapper* getPowerHal();
+ HalWrapper* getPowerHal() REQUIRES(mPowerHalMutex);
+ bool mReconnectPowerHal GUARDED_BY(mPowerHalMutex) = false;
+ std::mutex mPowerHalMutex;
std::atomic_bool mBootFinished = false;
- bool mReconnectPowerHal = false;
std::unordered_set<DisplayId> mExpensiveDisplays;
bool mNotifiedExpensiveRendering = false;