Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a1059909 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "SF: Guard Power HAL access with lock" into rvc-dev am: c8f2d971 am: 7905b182

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/native/+/11921176

Change-Id: I7b1a67b5915950ea8097f1e527b714cae4f6affc
parents ac06bfbd 7905b182
Loading
Loading
Loading
Loading
+2 −0
Original line number Original line Diff line number Diff line
@@ -85,6 +85,7 @@ void PowerAdvisor::setExpensiveRenderingExpected(DisplayId displayId, bool expec


    const bool expectsExpensiveRendering = !mExpensiveDisplays.empty();
    const bool expectsExpensiveRendering = !mExpensiveDisplays.empty();
    if (mNotifiedExpensiveRendering != expectsExpensiveRendering) {
    if (mNotifiedExpensiveRendering != expectsExpensiveRendering) {
        std::lock_guard lock(mPowerHalMutex);
        HalWrapper* const halWrapper = getPowerHal();
        HalWrapper* const halWrapper = getPowerHal();
        if (halWrapper == nullptr) {
        if (halWrapper == nullptr) {
            return;
            return;
@@ -108,6 +109,7 @@ void PowerAdvisor::notifyDisplayUpdateImminent() {
    }
    }


    if (mSendUpdateImminent.load()) {
    if (mSendUpdateImminent.load()) {
        std::lock_guard lock(mPowerHalMutex);
        HalWrapper* const halWrapper = getPowerHal();
        HalWrapper* const halWrapper = getPowerHal();
        if (halWrapper == nullptr) {
        if (halWrapper == nullptr) {
            return;
            return;
+5 −2
Original line number Original line Diff line number Diff line
@@ -19,6 +19,8 @@
#include <atomic>
#include <atomic>
#include <unordered_set>
#include <unordered_set>


#include <utils/Mutex.h>

#include "../Scheduler/OneShotTimer.h"
#include "../Scheduler/OneShotTimer.h"
#include "DisplayIdentification.h"
#include "DisplayIdentification.h"


@@ -56,10 +58,11 @@ public:
    void notifyDisplayUpdateImminent() override;
    void notifyDisplayUpdateImminent() override;


private:
private:
    HalWrapper* getPowerHal();
    HalWrapper* getPowerHal() REQUIRES(mPowerHalMutex);
    bool mReconnectPowerHal GUARDED_BY(mPowerHalMutex) = false;
    std::mutex mPowerHalMutex;


    std::atomic_bool mBootFinished = false;
    std::atomic_bool mBootFinished = false;
    bool mReconnectPowerHal = false;


    std::unordered_set<DisplayId> mExpensiveDisplays;
    std::unordered_set<DisplayId> mExpensiveDisplays;
    bool mNotifiedExpensiveRendering = false;
    bool mNotifiedExpensiveRendering = false;