diff options
| author | 2020-06-22 16:40:26 +0000 | |
|---|---|---|
| committer | 2020-06-22 16:40:26 +0000 | |
| commit | c8f2d9717489bb64955dd7ea809bc9e6e2814d0a (patch) | |
| tree | 3151f3310f1b23fd924884f26eecebd9e6b62423 | |
| parent | a0758a8a3d599eda4d0e451385adda3d3e400b94 (diff) | |
| parent | 209500045607e6a7d363ee5c1010478a058c3e0a (diff) | |
Merge "SF: Guard Power HAL access with lock" into rvc-dev
| -rw-r--r-- | services/surfaceflinger/DisplayHardware/PowerAdvisor.cpp | 2 | ||||
| -rw-r--r-- | services/surfaceflinger/DisplayHardware/PowerAdvisor.h | 7 |
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; |