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

Commit 4eaafe39 authored by Fiona Campbell's avatar Fiona Campbell
Browse files

Send -1.0 when brightness is off

Brightness was being sent as 0(MIN) previously, we want -1.0(OFF) to be sent to the display.

Bug: 185853190
Bug: 184908496
Test: manual
Change-Id: I14cff1a769e769fff1fa6e90ef0177c3b8518ba4
parent 22f83b56
Loading
Loading
Loading
Loading
+3 −8
Original line number Diff line number Diff line
@@ -74,6 +74,8 @@ public class DisplayDeviceConfig {
    // so -2 is used instead
    private static final float INVALID_BRIGHTNESS_IN_CONFIG = -2f;

    private static final float NITS_INVALID = -1;

    private final Context mContext;

    // The details of the ambient light sensor associated with this display.
@@ -230,7 +232,7 @@ public class DisplayDeviceConfig {
    public float getNitsFromBacklight(float backlight) {
        if (mBacklightToNitsSpline == null) {
            Slog.wtf(TAG, "requesting nits when no mapping exists.");
            return -1;
            return NITS_INVALID;
        }
        backlight = Math.max(backlight, mBacklightMinimum);
        return mBacklightToNitsSpline.interpolate(backlight);
@@ -279,13 +281,6 @@ public class DisplayDeviceConfig {
        return mProximitySensor;
    }

    /**
     * @return true if a nits to backlight mapping is defined in this config, false otherwise.
     */
    public boolean hasNitsMapping() {
        return mBacklightToNitsSpline != null;
    }

    /**
     * @param quirkValue The quirk to test.
     * @return {@code true} if the specified quirk is present in this configuration,
+24 −23
Original line number Diff line number Diff line
@@ -67,8 +67,6 @@ final class LocalDisplayAdapter extends DisplayAdapter {

    private static final int NO_DISPLAY_MODE_ID = 0;

    private static final float NITS_INVALID = -1;

    private final LongSparseArray<LocalDisplayDevice> mDevices = new LongSparseArray<>();

    private final Injector mInjector;
@@ -770,49 +768,52 @@ final class LocalDisplayAdapter extends DisplayAdapter {
                        }
                    }

                    private void setDisplayBrightness(float brightness, float sdrBrightness) {
                        // Ensure brightnessState is valid before processing and sending to
                        // surface control
                        if (Float.isNaN(brightness)) {
                    private void setDisplayBrightness(float brightnessState,
                            float sdrBrightnessState) {
                        // brightnessState includes invalid, off and full range.
                        if (Float.isNaN(brightnessState) || Float.isNaN(sdrBrightnessState)) {
                            return;
                        }

                        if (DEBUG) {
                            Slog.d(TAG, "setDisplayBrightness("
                                    + "id=" + physicalDisplayId
                                    + ", brightness=" + brightness
                                    + ", sdrBrightness=" + sdrBrightness + ")");
                                    + ", brightnessState=" + brightnessState
                                    + ", sdrBrightnessState=" + sdrBrightnessState + ")");
                        }

                        Trace.traceBegin(Trace.TRACE_TAG_POWER, "setDisplayBrightness("
                                + "id=" + physicalDisplayId + ", brightness=" + brightness
                                + ", sdrBrightness=" + sdrBrightness + ")");
                                + "id=" + physicalDisplayId + ", brightnessState="
                                + brightnessState + ", sdrBrightnessState=" + sdrBrightnessState
                                + ")");
                        try {
                            final float backlight = brightnessToBacklight(brightness);
                            float nits = NITS_INVALID;
                            float sdrBacklight = PowerManager.BRIGHTNESS_INVALID_FLOAT;
                            float sdrNits = NITS_INVALID;
                            if (getDisplayDeviceConfig().hasNitsMapping()
                                    && sdrBrightness != PowerManager.BRIGHTNESS_INVALID_FLOAT) {
                                nits = backlightToNits(backlight);
                                sdrBacklight = brightnessToBacklight(sdrBrightness);
                                sdrNits = backlightToNits(sdrBacklight);
                            }
                            final float backlight = brightnessToBacklight(brightnessState);
                            final float sdrBacklight = brightnessToBacklight(sdrBrightnessState);

                            final float nits = backlightToNits(backlight);
                            final float sdrNits = backlightToNits(sdrBacklight);

                            mBacklightAdapter.setBacklight(sdrBacklight, sdrNits, backlight, nits);
                            Trace.traceCounter(Trace.TRACE_TAG_POWER,
                                    "ScreenBrightness",
                                    BrightnessSynchronizer.brightnessFloatToInt(brightness));
                                    BrightnessSynchronizer.brightnessFloatToInt(brightnessState));
                            Trace.traceCounter(Trace.TRACE_TAG_POWER,
                                    "SdrScreenBrightness",
                                    BrightnessSynchronizer.brightnessFloatToInt(sdrBrightness));
                                    BrightnessSynchronizer.brightnessFloatToInt(
                                            sdrBrightnessState));
                        } finally {
                            Trace.traceEnd(Trace.TRACE_TAG_POWER);
                        }
                    }

                    private float brightnessToBacklight(float brightness) {
                        if (BrightnessSynchronizer.floatEquals(
                                brightness, PowerManager.BRIGHTNESS_OFF_FLOAT)) {
                            return PowerManager.BRIGHTNESS_OFF_FLOAT;
                        } else {
                            return getDisplayDeviceConfig().getBacklightFromBrightness(brightness);
                        }
                    }

                    private float backlightToNits(float backlight) {
                        return getDisplayDeviceConfig().getNitsFromBacklight(backlight);