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

Commit c8f2d971 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "SF: Guard Power HAL access with lock" into rvc-dev

parents a0758a8a 20950004
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;