From 98f9e2f5857f6ec9b5e624ec0edad852a6a33ca3 Mon Sep 17 00:00:00 2001 From: petsjonkin Date: Wed, 13 Dec 2023 15:03:31 +0000 Subject: HdrClamper should be enabled with 0 minHdrPercentOfScreen Also added extra fields to HdrClamper dump Bug: b/304714269 Test: atest HrdClamperTest Change-Id: I4f34fd18aa12eb2ebc977c34477a8ad08b3de522 --- .../android/server/display/brightness/clamper/HdrClamper.java | 8 +++++--- .../server/display/brightness/clamper/HdrClamperTest.java | 10 ++++++++++ 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/services/core/java/com/android/server/display/brightness/clamper/HdrClamper.java b/services/core/java/com/android/server/display/brightness/clamper/HdrClamper.java index 200d88a78dd7..01a8d360a526 100644 --- a/services/core/java/com/android/server/display/brightness/clamper/HdrClamper.java +++ b/services/core/java/com/android/server/display/brightness/clamper/HdrClamper.java @@ -104,8 +104,7 @@ public class HdrClamper { public void resetHdrConfig(HdrBrightnessData data, int width, int height, float minimumHdrPercentOfScreen, IBinder displayToken) { mHdrBrightnessData = data; - mHdrListener.mHdrMinPixels = minimumHdrPercentOfScreen <= 0 ? -1 - : (float) (width * height) * minimumHdrPercentOfScreen; + mHdrListener.mHdrMinPixels = (float) (width * height) * minimumHdrPercentOfScreen; if (displayToken != mRegisteredDisplayToken) { // token changed, resubscribe if (mRegisteredDisplayToken != null) { // previous token not null, unsubscribe mHdrListener.unregister(mRegisteredDisplayToken); @@ -115,7 +114,7 @@ public class HdrClamper { // new token not null and hdr min % of the screen is set, subscribe. // e.g. for virtual display, HBM data will be missing and HdrListener // should not be registered - if (displayToken != null && mHdrListener.mHdrMinPixels > 0) { + if (displayToken != null && mHdrListener.mHdrMinPixels >= 0) { mHdrListener.register(displayToken); mRegisteredDisplayToken = displayToken; } @@ -140,8 +139,11 @@ public class HdrClamper { pw.println(" mDesiredMaxBrightness=" + mDesiredMaxBrightness); pw.println(" mTransitionRate=" + mTransitionRate); pw.println(" mDesiredTransitionRate=" + mDesiredTransitionRate); + pw.println(" mHdrVisible=" + mHdrVisible); + pw.println(" mHdrListener.mHdrMinPixels=" + mHdrListener.mHdrMinPixels); pw.println(" mHdrBrightnessData=" + (mHdrBrightnessData == null ? "null" : mHdrBrightnessData.toString())); + pw.println(" mHdrListener registered=" + (mRegisteredDisplayToken != null)); pw.println(" mAmbientLux=" + mAmbientLux); } diff --git a/services/tests/displayservicetests/src/com/android/server/display/brightness/clamper/HdrClamperTest.java b/services/tests/displayservicetests/src/com/android/server/display/brightness/clamper/HdrClamperTest.java index 8d8274c61b20..87fc7a484c5c 100644 --- a/services/tests/displayservicetests/src/com/android/server/display/brightness/clamper/HdrClamperTest.java +++ b/services/tests/displayservicetests/src/com/android/server/display/brightness/clamper/HdrClamperTest.java @@ -121,6 +121,16 @@ public class HdrClamperTest { verify(mMockHdrInfoListener, times(1)).register(mMockBinder); } + @Test + public void testRegisterHdrListener_ZeroMinHdrPercent() { + IBinder otherBinder = mock(IBinder.class); + mHdrClamper.resetHdrConfig(TEST_HDR_DATA, WIDTH, HEIGHT, + /* minimumHdrPercentOfScreen= */ 0, otherBinder); + + verify(mMockHdrInfoListener).unregister(mMockBinder); + verify(mMockHdrInfoListener).register(otherBinder); + } + @Test public void testRegisterNotCalledIfHbmConfigIsMissing() { IBinder otherBinder = mock(IBinder.class); -- cgit v1.2.3-59-g8ed1b