diff options
author | Safayat Ullah <safayat@google.com> | 2023-08-29 14:21:03 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2023-08-29 14:21:03 +0000 |
commit | 48c94a6ec63788b3d656aa633b853c40e88bd94e (patch) | |
tree | 160c2a5f48af288925ab75cabf41927353d3ad29 | |
parent | 5a124a58eed176b3b85175ddd66e9163f2c4a709 (diff) | |
parent | 237752a978a1b06a880ae01e323bfa2aef6c188a (diff) | |
download | zuma-48c94a6ec63788b3d656aa633b853c40e88bd94e.tar.gz |
libhwc2.1: enter ns mode after boot when smooth display off am: 237752a978
Original change: https://googleplex-android-review.googlesource.com/c/platform/hardware/google/graphics/zuma/+/23918193
Change-Id: Ia9360ffd33e8674717a7d404f7cdd38476eeffb6
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r-- | libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp index 36d3f93..fc2ac33 100644 --- a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp +++ b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp @@ -96,8 +96,14 @@ ExynosPrimaryDisplayModule::OperationRateManager::~OperationRateManager() {} int32_t ExynosPrimaryDisplayModule::OperationRateManager::onPeakRefreshRate(uint32_t rate) { Mutex::Autolock lock(mLock); + char rateStr[PROP_VALUE_MAX]; + std::sprintf(rateStr, "%d", rate); + OP_MANAGER_LOGD("rate=%d", rate); mDisplayPeakRefreshRate = rate; + if (property_set("persist.vendor.primarydisplay.op.peak_refresh_rate", rateStr) < 0) { + OP_MANAGER_LOGE("failed to set property persist.primarydisplay.op.peak_refresh_rate"); + } return 0; } @@ -121,6 +127,29 @@ int32_t ExynosPrimaryDisplayModule::OperationRateManager::onBrightness(uint32_t if (dbv == 0 || mDisplayLastDbv == dbv) return 0; OP_MANAGER_LOGD("dbv=%d", dbv); mDisplayDbv = dbv; + + /* + Update peak_refresh_rate from persist/vendor prop after a brightness change. + 1. Otherwise there will be NS-HS-NS switch during the onPowerMode. + 2. When constructor is called, persist property is not ready yet and returns 0. + */ + if (!mDisplayPeakRefreshRate) { + char rateStr[PROP_VALUE_MAX]; + int32_t vendorPeakRefreshRate = 0, persistPeakRefreshRate = 0; + if (property_get("persist.vendor.primarydisplay.op.peak_refresh_rate", rateStr, "0") >= 0 && + atoi(rateStr) > 0) { + persistPeakRefreshRate = atoi(rateStr); + mDisplayPeakRefreshRate = persistPeakRefreshRate; + } else { + vendorPeakRefreshRate = + property_get_int32("vendor.primarydisplay.op.peak_refresh_rate", 0); + mDisplayPeakRefreshRate = vendorPeakRefreshRate; + } + + OP_MANAGER_LOGD("peak_refresh_rate=%d[vendor: %d|persist %d]", mDisplayPeakRefreshRate, + vendorPeakRefreshRate, persistPeakRefreshRate); + } + return updateOperationRateLocked(DispOpCondition::SET_DBV); } |