Loading services/core/java/com/android/server/display/BrightnessRangeController.java +1 −4 Original line number Diff line number Diff line Loading @@ -19,7 +19,6 @@ package com.android.server.display; import android.hardware.display.BrightnessInfo; import android.os.Handler; import android.os.IBinder; import android.os.PowerManager; import com.android.internal.annotations.VisibleForTesting; import com.android.server.display.brightness.clamper.HdrClamper; Loading Loading @@ -147,9 +146,7 @@ class BrightnessRangeController { float getHdrBrightnessValue() { float hdrBrightness = mHbmController.getHdrBrightnessValue(); float brightnessMax = mUseHdrClamper ? mHdrClamper.getMaxBrightness() : PowerManager.BRIGHTNESS_MAX; return Math.min(hdrBrightness, brightnessMax); return mUseHdrClamper ? mHdrClamper.clamp(hdrBrightness) : hdrBrightness; } float getTransitionPoint() { Loading services/core/java/com/android/server/display/brightness/clamper/HdrClamper.java +20 −3 Original line number Diff line number Diff line Loading @@ -56,6 +56,11 @@ public class HdrClamper { private float mTransitionRate = -1f; private float mDesiredTransitionRate = -1f; /** * Indicates that maxBrightness is changed, and we should use slow transition */ private boolean mUseSlowTransition = false; public HdrClamper(BrightnessClamperController.ClamperChangeListener clamperChangeListener, Handler handler) { this(clamperChangeListener, handler, new Injector()); Loading @@ -69,6 +74,7 @@ public class HdrClamper { mDebouncer = () -> { mTransitionRate = mDesiredTransitionRate; mMaxBrightness = mDesiredMaxBrightness; mUseSlowTransition = true; mClamperChangeListener.onChanged(); }; mHdrListener = injector.getHdrListener((visible) -> { Loading @@ -77,14 +83,24 @@ public class HdrClamper { }, handler); } // Called in same looper: mHandler.getLooper() /** * Applies clamping * Called in same looper: mHandler.getLooper() */ public float clamp(float brightness) { return Math.min(brightness, mMaxBrightness); } @VisibleForTesting public float getMaxBrightness() { return mMaxBrightness; } // Called in same looper: mHandler.getLooper() public float getTransitionRate() { return mTransitionRate; float expectedTransitionRate = mUseSlowTransition ? mTransitionRate : -1; mUseSlowTransition = false; return expectedTransitionRate; } /** Loading Loading @@ -157,7 +173,8 @@ public class HdrClamper { mMaxBrightness = PowerManager.BRIGHTNESS_MAX; mDesiredMaxBrightness = PowerManager.BRIGHTNESS_MAX; mDesiredTransitionRate = -1f; mTransitionRate = 1f; mTransitionRate = -1f; mUseSlowTransition = false; mClamperChangeListener.onChanged(); } Loading services/tests/displayservicetests/src/com/android/server/display/DisplayPowerControllerTest.java +1 −1 Original line number Diff line number Diff line Loading @@ -1298,7 +1298,7 @@ public final class DisplayPowerControllerTest { when(mHolder.hbmController.getHighBrightnessMode()).thenReturn( BrightnessInfo.HIGH_BRIGHTNESS_MODE_HDR); when(mHolder.hbmController.getHdrBrightnessValue()).thenReturn(PowerManager.BRIGHTNESS_MAX); when(mHolder.hdrClamper.getMaxBrightness()).thenReturn(clampedBrightness); when(mHolder.hdrClamper.clamp(PowerManager.BRIGHTNESS_MAX)).thenReturn(clampedBrightness); when(mHolder.hdrClamper.getTransitionRate()).thenReturn(transitionRate); mHolder.dpc.requestPowerState(dpr, /* waitForNegativeProximity= */ false); Loading services/tests/displayservicetests/src/com/android/server/display/brightness/clamper/HdrClamperTest.java +12 −0 Original line number Diff line number Diff line Loading @@ -220,6 +220,18 @@ public class HdrClamperTest { assertEquals(0.04f, mHdrClamper.getTransitionRate(), FLOAT_TOLERANCE); } @Test public void testCalmper_transitionRateOverriddenByOtherRequest() { mHdrClamper.onAmbientLuxChange(499); mClock.fastForward(3000); mTestHandler.timeAdvance(); assertEquals(0.6f, mHdrClamper.getMaxBrightness(), FLOAT_TOLERANCE); assertEquals(0.04, mHdrClamper.getTransitionRate(), FLOAT_TOLERANCE); // getTransitionRate should reset transitionRate assertEquals(-1f, mHdrClamper.getTransitionRate(), FLOAT_TOLERANCE); } // MsgInfo.sendTime is calculated first by adding SystemClock.uptimeMillis() // (in Handler.sendMessageDelayed) and then by subtracting SystemClock.uptimeMillis() // (in TestHandler.sendMessageAtTime, there might be several milliseconds difference between Loading Loading
services/core/java/com/android/server/display/BrightnessRangeController.java +1 −4 Original line number Diff line number Diff line Loading @@ -19,7 +19,6 @@ package com.android.server.display; import android.hardware.display.BrightnessInfo; import android.os.Handler; import android.os.IBinder; import android.os.PowerManager; import com.android.internal.annotations.VisibleForTesting; import com.android.server.display.brightness.clamper.HdrClamper; Loading Loading @@ -147,9 +146,7 @@ class BrightnessRangeController { float getHdrBrightnessValue() { float hdrBrightness = mHbmController.getHdrBrightnessValue(); float brightnessMax = mUseHdrClamper ? mHdrClamper.getMaxBrightness() : PowerManager.BRIGHTNESS_MAX; return Math.min(hdrBrightness, brightnessMax); return mUseHdrClamper ? mHdrClamper.clamp(hdrBrightness) : hdrBrightness; } float getTransitionPoint() { Loading
services/core/java/com/android/server/display/brightness/clamper/HdrClamper.java +20 −3 Original line number Diff line number Diff line Loading @@ -56,6 +56,11 @@ public class HdrClamper { private float mTransitionRate = -1f; private float mDesiredTransitionRate = -1f; /** * Indicates that maxBrightness is changed, and we should use slow transition */ private boolean mUseSlowTransition = false; public HdrClamper(BrightnessClamperController.ClamperChangeListener clamperChangeListener, Handler handler) { this(clamperChangeListener, handler, new Injector()); Loading @@ -69,6 +74,7 @@ public class HdrClamper { mDebouncer = () -> { mTransitionRate = mDesiredTransitionRate; mMaxBrightness = mDesiredMaxBrightness; mUseSlowTransition = true; mClamperChangeListener.onChanged(); }; mHdrListener = injector.getHdrListener((visible) -> { Loading @@ -77,14 +83,24 @@ public class HdrClamper { }, handler); } // Called in same looper: mHandler.getLooper() /** * Applies clamping * Called in same looper: mHandler.getLooper() */ public float clamp(float brightness) { return Math.min(brightness, mMaxBrightness); } @VisibleForTesting public float getMaxBrightness() { return mMaxBrightness; } // Called in same looper: mHandler.getLooper() public float getTransitionRate() { return mTransitionRate; float expectedTransitionRate = mUseSlowTransition ? mTransitionRate : -1; mUseSlowTransition = false; return expectedTransitionRate; } /** Loading Loading @@ -157,7 +173,8 @@ public class HdrClamper { mMaxBrightness = PowerManager.BRIGHTNESS_MAX; mDesiredMaxBrightness = PowerManager.BRIGHTNESS_MAX; mDesiredTransitionRate = -1f; mTransitionRate = 1f; mTransitionRate = -1f; mUseSlowTransition = false; mClamperChangeListener.onChanged(); } Loading
services/tests/displayservicetests/src/com/android/server/display/DisplayPowerControllerTest.java +1 −1 Original line number Diff line number Diff line Loading @@ -1298,7 +1298,7 @@ public final class DisplayPowerControllerTest { when(mHolder.hbmController.getHighBrightnessMode()).thenReturn( BrightnessInfo.HIGH_BRIGHTNESS_MODE_HDR); when(mHolder.hbmController.getHdrBrightnessValue()).thenReturn(PowerManager.BRIGHTNESS_MAX); when(mHolder.hdrClamper.getMaxBrightness()).thenReturn(clampedBrightness); when(mHolder.hdrClamper.clamp(PowerManager.BRIGHTNESS_MAX)).thenReturn(clampedBrightness); when(mHolder.hdrClamper.getTransitionRate()).thenReturn(transitionRate); mHolder.dpc.requestPowerState(dpr, /* waitForNegativeProximity= */ false); Loading
services/tests/displayservicetests/src/com/android/server/display/brightness/clamper/HdrClamperTest.java +12 −0 Original line number Diff line number Diff line Loading @@ -220,6 +220,18 @@ public class HdrClamperTest { assertEquals(0.04f, mHdrClamper.getTransitionRate(), FLOAT_TOLERANCE); } @Test public void testCalmper_transitionRateOverriddenByOtherRequest() { mHdrClamper.onAmbientLuxChange(499); mClock.fastForward(3000); mTestHandler.timeAdvance(); assertEquals(0.6f, mHdrClamper.getMaxBrightness(), FLOAT_TOLERANCE); assertEquals(0.04, mHdrClamper.getTransitionRate(), FLOAT_TOLERANCE); // getTransitionRate should reset transitionRate assertEquals(-1f, mHdrClamper.getTransitionRate(), FLOAT_TOLERANCE); } // MsgInfo.sendTime is calculated first by adding SystemClock.uptimeMillis() // (in Handler.sendMessageDelayed) and then by subtracting SystemClock.uptimeMillis() // (in TestHandler.sendMessageAtTime, there might be several milliseconds difference between Loading