summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Chris Kuiper <ckuiper@google.com> 2022-02-01 17:56:07 -0800
committer Chris Kuiper <ckuiper@google.com> 2022-02-01 18:24:29 -0800
commit246d553f51499658d45c2eedaf79a51f7b540dba (patch)
tree9e2e2951a98316041d89bf2868486eec05839840
parentf7e29a40064b2570154e2d258d053a54792e736c (diff)
DisplayManager: Make sure RampAnimator sets property in linear space.
This fixes the case where RampAnimator is used the first time and immediately jumps to the target brightness. In that case the property was set to a value that has not been converted back into linear space, causing an incorrect initial brightness value. To avoid these bugs, consolidate setting of the property into one function. Bug: 217289549 Test: Cannot reproduce bug. Change-Id: I2ccdaa51ddba062fc5de1209470b90eb429280db
-rw-r--r--services/core/java/com/android/server/display/RampAnimator.java15
1 files changed, 11 insertions, 4 deletions
diff --git a/services/core/java/com/android/server/display/RampAnimator.java b/services/core/java/com/android/server/display/RampAnimator.java
index 1ebd1f5a535c..d8672fc07619 100644
--- a/services/core/java/com/android/server/display/RampAnimator.java
+++ b/services/core/java/com/android/server/display/RampAnimator.java
@@ -70,7 +70,7 @@ class RampAnimator<T> {
mRate = 0;
mTargetValue = target;
mCurrentValue = target;
- mProperty.setValue(mObject, target);
+ setPropertyValue(target);
if (mAnimating) {
mAnimating = false;
cancelAnimationCallback();
@@ -125,6 +125,15 @@ class RampAnimator<T> {
mListener = listener;
}
+ /**
+ * Sets the brightness property by converting the given value from HLG space
+ * into linear space.
+ */
+ private void setPropertyValue(float val) {
+ final float linearVal = BrightnessUtils.convertGammaToLinear(val);
+ mProperty.setValue(mObject, linearVal);
+ }
+
private void postAnimationCallback() {
mChoreographer.postCallback(Choreographer.CALLBACK_ANIMATION, mAnimationCallback, null);
}
@@ -160,9 +169,7 @@ class RampAnimator<T> {
final float oldCurrentValue = mCurrentValue;
mCurrentValue = mAnimatedValue;
if (oldCurrentValue != mCurrentValue) {
- // Convert value from HLG into linear space for the property.
- final float linearCurrentVal = BrightnessUtils.convertGammaToLinear(mCurrentValue);
- mProperty.setValue(mObject, linearCurrentVal);
+ setPropertyValue(mCurrentValue);
}
if (mTargetValue != mCurrentValue) {
postAnimationCallback();