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

Commit dbbae482 authored by Sally Qi's avatar Sally Qi
Browse files

Fix the issue of using SilkFx crash on non-HDR-supported phone.

- ideally on non-HDR-supported phone, `Display#isHdrSdrRatioAvailable`
  should be false, while it's not the case in such phone now. The reason
  is hdrSdrRatio always gets updated. We should reject such update if
  there is no SdrHdrRatioMap loaded.

Bug: 280804824
Test: play with SilkFX; LocalDisplayAdapterTest
Change-Id: If162fc15cae033d056f22d02625ad955006dd65a
parent c6eeba23
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -888,6 +888,13 @@ public class DisplayDeviceConfig {
        return mBacklightToNitsSpline.interpolate(backlight);
    }

    /**
     * @return true if there is sdrHdrRatioMap, false otherwise.
     */
    public boolean hasSdrToHdrRatioSpline() {
        return mSdrToHdrRatioSpline != null;
    }

    /**
     * Calculate the HDR brightness for the specified SDR brightenss, restricted by the
     * maxDesiredHdrSdrRatio (the ratio between the HDR luminance and SDR luminance)
+3 −1
Original line number Diff line number Diff line
@@ -888,7 +888,9 @@ final class LocalDisplayAdapter extends DisplayAdapter {
                                    BrightnessSynchronizer.brightnessFloatToInt(
                                            sdrBrightnessState));

                            if (getDisplayDeviceConfig().hasSdrToHdrRatioSpline()) {
                                handleHdrSdrNitsChanged(nits, sdrNits);
                            }

                        } finally {
                            Trace.traceEnd(Trace.TRACE_TAG_POWER);
+2 −0
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assume.assumeTrue;
import static org.mockito.ArgumentMatchers.anyFloat;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.Mockito.mock;
@@ -981,6 +982,7 @@ public class LocalDisplayAdapterTest {
        DisplayDevice displayDevice = mListener.addedDisplays.get(0);

        // Turn on / initialize
        assumeTrue(displayDevice.getDisplayDeviceConfig().hasSdrToHdrRatioSpline());
        Runnable changeStateRunnable = displayDevice.requestDisplayStateLocked(Display.STATE_ON, 0,
                0);
        changeStateRunnable.run();