summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp23
-rw-r--r--libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.h4
2 files changed, 12 insertions, 15 deletions
diff --git a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp
index fee339a..4f3ea81 100644
--- a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp
+++ b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp
@@ -984,30 +984,27 @@ int32_t ExynosPrimaryDisplayModule::setAtcStDimming(uint32_t value) {
uint32_t step = mAtcStTarget > strength ? mAtcStUpStep : mAtcStDownStep;
int diff = value - strength;
- uint32_t steps = std::abs(diff) / step;
- int remainder = std::abs(diff) % step;
- if (remainder > 0) steps = steps + 1;
- mAtcStStepLeft = steps;
- ALOGI("setup atc st dimming=%d, steps=%d, step=%d", value, steps, step);
+ uint32_t count = (std::abs(diff) + step - 1) / step;
+ mAtcStStepCount = count;
+ ALOGI("setup atc st dimming=%d, count=%d, step=%d", value, count, step);
}
- if (mAtcStStepLeft == 0 && !mAtcStrength.is_dirty()) return NO_ERROR;
+ if (mAtcStStepCount == 0 && !mAtcStrength.is_dirty()) return NO_ERROR;
- if (strength < mAtcStTarget) {
+ if ((strength + mAtcStUpStep) < mAtcStTarget) {
strength = strength + mAtcStUpStep;
- if (strength > mAtcStTarget) strength = mAtcStTarget;
- } else if (strength > mAtcStTarget) {
+ } else if (strength > (mAtcStTarget + mAtcStDownStep)) {
strength = strength - mAtcStDownStep;
- if (strength < mAtcStTarget) strength = mAtcStTarget;
- } else
+ } else {
strength = mAtcStTarget;
+ }
if (setAtcStrength(strength) != NO_ERROR) {
ALOGE("Failed to set atc st");
return -EPERM;
}
- if (mAtcStStepLeft > 0) mAtcStStepLeft--;
+ if (mAtcStStepCount > 0) mAtcStStepCount--;
return NO_ERROR;
}
@@ -1028,7 +1025,7 @@ void ExynosPrimaryDisplayModule::checkAtcAnimation() {
return;
}
- if (mPendingAtcOff && mAtcStStepLeft == 0) {
+ if (mPendingAtcOff && mAtcStStepCount == 0) {
if (setAtcEnable(false) != NO_ERROR) {
ALOGE("Failed to set atc enable to off");
return;
diff --git a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.h b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.h
index 25b0289..1b80d2c 100644
--- a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.h
+++ b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.h
@@ -260,7 +260,7 @@ class ExynosPrimaryDisplayModule : public ExynosPrimaryDisplay {
int32_t setAtcEnable(bool enable);
void checkAtcAnimation();
bool isInAtcAnimation() {
- if (mAtcStStepLeft > 0)
+ if (mAtcStStepCount > 0)
return true;
else
return false;
@@ -276,7 +276,7 @@ class ExynosPrimaryDisplayModule : public ExynosPrimaryDisplay {
CtrlValue<uint32_t> mAtcStrength;
CtrlValue<uint32_t> mAtcEnable;
std::unordered_map<std::string, CtrlValue<int32_t>> mAtcSubSetting;
- uint32_t mAtcStStepLeft = 0;
+ uint32_t mAtcStStepCount = 0;
uint32_t mAtcStTarget = 0;
uint32_t mAtcStUpStep;
uint32_t mAtcStDownStep;