diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2022-12-27 00:22:05 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2022-12-27 00:22:05 +0000 |
commit | b86b442634ac0341df81c7e0407529790de04797 (patch) | |
tree | 5b4e79844ceeaba4dec55c96b3adf6529f13c752 | |
parent | 5c6fb40507f34d71df62870825114d6ba9d5f942 (diff) | |
parent | 7c10792f83fea576d0b6044831cbf83d61cd8c74 (diff) | |
download | common-b86b442634ac0341df81c7e0407529790de04797.tar.gz |
Snap for 9438050 from 7c10792f83fea576d0b6044831cbf83d61cd8c74 to tm-qpr2-release
Change-Id: I9af0828edf81642f37fcb9b11debed38380199d9
-rw-r--r-- | libhwc2.1/libdevice/BrightnessController.cpp | 13 | ||||
-rw-r--r-- | libhwc2.1/libdevice/BrightnessController.h | 1 | ||||
-rw-r--r-- | libhwc2.1/libmaindisplay/ExynosPrimaryDisplay.cpp | 5 |
3 files changed, 15 insertions, 4 deletions
diff --git a/libhwc2.1/libdevice/BrightnessController.cpp b/libhwc2.1/libdevice/BrightnessController.cpp index 434e63e..1057629 100644 --- a/libhwc2.1/libdevice/BrightnessController.cpp +++ b/libhwc2.1/libdevice/BrightnessController.cpp @@ -382,9 +382,10 @@ float BrightnessController::getSdrDimRatioForInstantHbm() { } void BrightnessController::onClearDisplay() { + resetLhbmState(); + std::lock_guard<std::recursive_mutex> lock(mBrightnessMutex); mEnhanceHbmReq.reset(false); - mLhbmReq.reset(false); mBrightnessFloatReq.reset(-1); mInstantHbmReq.reset(false); @@ -397,9 +398,6 @@ void BrightnessController::onClearDisplay() { if (mBrightnessDimmingUsage == BrightnessDimmingUsage::NORMAL) { mDimming.store(true); } - mLhbm.reset(false); - - mLhbmBrightnessAdj = false; std::lock_guard<std::recursive_mutex> lock1(mCabcModeMutex); mCabcMode.reset(false); @@ -777,6 +775,13 @@ int BrightnessController::checkSysfsStatus(const char* file, return ret == NO_ERROR; } +void BrightnessController::resetLhbmState() { + std::lock_guard<std::recursive_mutex> lock(mBrightnessMutex); + mLhbmReq.reset(false); + mLhbm.reset(false); + mLhbmBrightnessAdj = false; +} + void BrightnessController::setOutdoorVisibility(LbeState state) { std::lock_guard<std::recursive_mutex> lock(mCabcModeMutex); mOutdoorVisibility = (state != LbeState::OFF); diff --git a/libhwc2.1/libdevice/BrightnessController.h b/libhwc2.1/libdevice/BrightnessController.h index 97f6ea0..1a19758 100644 --- a/libhwc2.1/libdevice/BrightnessController.h +++ b/libhwc2.1/libdevice/BrightnessController.h @@ -116,6 +116,7 @@ public: } int checkSysfsStatus(const char *file, const std::vector<std::string>& expectedValue, const nsecs_t timeoutNs); + void resetLhbmState(); uint32_t getBrightnessLevel() { std::lock_guard<std::recursive_mutex> lock(mBrightnessMutex); diff --git a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplay.cpp b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplay.cpp index 7d72633..594495b 100644 --- a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplay.cpp +++ b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplay.cpp @@ -343,6 +343,11 @@ int32_t ExynosPrimaryDisplay::setPowerDoze(hwc2_power_mode_t mode) { mPowerModeState = mode; } + // LHBM will be disabled in the kernel while entering AOD mode if it's + // already enabled. Reset the state to avoid the sync problem. + mBrightnessController->resetLhbmState(); + mLhbmOn = false; + ExynosDisplay::updateRefreshRateHint(); return HWC2_ERROR_NONE; |