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
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -888,7 +888,9 @@ final class LocalDisplayAdapter extends DisplayAdapter {
|
||||
BrightnessSynchronizer.brightnessFloatToInt(
|
||||
sdrBrightnessState));
|
||||
|
||||
handleHdrSdrNitsChanged(nits, sdrNits);
|
||||
if (getDisplayDeviceConfig().hasSdrToHdrRatioSpline()) {
|
||||
handleHdrSdrNitsChanged(nits, sdrNits);
|
||||
}
|
||||
|
||||
} finally {
|
||||
Trace.traceEnd(Trace.TRACE_TAG_POWER);
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user