Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 98f9e2f5 authored by petsjonkin's avatar petsjonkin Committed by Oleg Petšjonkin
Browse files

HdrClamper should be enabled with 0 minHdrPercentOfScreen

Also added extra fields to HdrClamper dump

Bug: b/304714269
Test: atest HrdClamperTest
Change-Id: I4f34fd18aa12eb2ebc977c34477a8ad08b3de522
parent 5b1e3439
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -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);
    }

+10 −0
Original line number Diff line number Diff line
@@ -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);