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

Commit 3666b2d0 authored by Oleg Petšjonkin's avatar Oleg Petšjonkin Committed by Android (Google) Code Review
Browse files

Merge "Revert^2 "Move brightnessMaxReason to DisplayBrightnessState"" into main

parents a9567c6b 6e17cf8b
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -158,6 +158,8 @@ public final class BrightnessInfo implements Parcelable {
                return "thermal";
            case BRIGHTNESS_MAX_REASON_POWER_IC:
                return "power IC";
            case BRIGHTNESS_MAX_REASON_WEAR_BEDTIME_MODE:
                return "wear bedtime";
        }
        return "invalid";
    }
+36 −6
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.server.display;

import android.hardware.display.BrightnessInfo;
import android.text.TextUtils;

import com.android.server.display.brightness.BrightnessEvent;
@@ -50,6 +51,8 @@ public final class DisplayBrightnessState {

    private final boolean mIsUserInitiatedChange;

    private @BrightnessInfo.BrightnessMaxReason int mBrightnessMaxReason;

    private DisplayBrightnessState(Builder builder) {
        mBrightness = builder.getBrightness();
        mHdrBrightness = builder.getHdrBrightness();
@@ -64,6 +67,7 @@ public final class DisplayBrightnessState {
        mBrightnessEvent = builder.getBrightnessEvent();
        mBrightnessAdjustmentFlag = builder.getBrightnessAdjustmentFlag();
        mIsUserInitiatedChange = builder.isUserInitiatedChange();
        mBrightnessMaxReason = builder.getBrightnessMaxReason();
    }

    /**
@@ -159,6 +163,13 @@ public final class DisplayBrightnessState {
        return mIsUserInitiatedChange;
    }

    /**
     * Gets reason for max brightness restriction
     */
    public @BrightnessInfo.BrightnessMaxReason int getBrightnessMaxReason() {
        return mBrightnessMaxReason;
    }

    @Override
    public String toString() {
        StringBuilder stringBuilder = new StringBuilder("DisplayBrightnessState:");
@@ -180,6 +191,8 @@ public final class DisplayBrightnessState {
                .append(Objects.toString(mBrightnessEvent, "null"));
        stringBuilder.append("\n    mBrightnessAdjustmentFlag:").append(mBrightnessAdjustmentFlag);
        stringBuilder.append("\n    mIsUserInitiatedChange:").append(mIsUserInitiatedChange);
        stringBuilder.append("\n    mBrightnessMaxReason:")
                .append(BrightnessInfo.briMaxReasonToString(mBrightnessMaxReason));
        return stringBuilder.toString();
    }

@@ -212,7 +225,8 @@ public final class DisplayBrightnessState {
                    == otherState.shouldUpdateScreenBrightnessSetting()
                && Objects.equals(mBrightnessEvent, otherState.getBrightnessEvent())
                && mBrightnessAdjustmentFlag == otherState.getBrightnessAdjustmentFlag()
                && mIsUserInitiatedChange == otherState.isUserInitiatedChange();
                && mIsUserInitiatedChange == otherState.isUserInitiatedChange()
                && mBrightnessMaxReason == otherState.getBrightnessMaxReason();
    }

    @Override
@@ -221,7 +235,7 @@ public final class DisplayBrightnessState {
                mShouldUseAutoBrightness, mIsSlowChange, mMaxBrightness, mMinBrightness,
                mCustomAnimationRate,
                mShouldUpdateScreenBrightnessSetting, mBrightnessEvent, mBrightnessAdjustmentFlag,
                mIsUserInitiatedChange);
                mIsUserInitiatedChange, mBrightnessMaxReason);
    }

    /**
@@ -245,12 +259,11 @@ public final class DisplayBrightnessState {
        private float mMinBrightness;
        private float mCustomAnimationRate = CUSTOM_ANIMATION_RATE_NOT_SET;
        private boolean mShouldUpdateScreenBrightnessSetting;

        private BrightnessEvent mBrightnessEvent;

        public int mBrightnessAdjustmentFlag = 0;

        private int mBrightnessAdjustmentFlag = 0;
        private boolean mIsUserInitiatedChange;
        private @BrightnessInfo.BrightnessMaxReason int mBrightnessMaxReason =
                BrightnessInfo.BRIGHTNESS_MAX_REASON_NONE;

        /**
         * Create a builder starting with the values from the specified {@link
@@ -274,6 +287,7 @@ public final class DisplayBrightnessState {
            builder.setBrightnessEvent(state.getBrightnessEvent());
            builder.setBrightnessAdjustmentFlag(state.getBrightnessAdjustmentFlag());
            builder.setIsUserInitiatedChange(state.isUserInitiatedChange());
            builder.setBrightnessMaxReason(state.getBrightnessMaxReason());
            return builder;
        }

@@ -506,5 +520,21 @@ public final class DisplayBrightnessState {
            mIsUserInitiatedChange = isUserInitiatedChange;
            return this;
        }

        /**
         * Gets reason for max brightness restriction
         */
        public @BrightnessInfo.BrightnessMaxReason int getBrightnessMaxReason() {
            return mBrightnessMaxReason;
        }

        /**
         * Sets reason for max brightness restriction
         */
        public Builder setBrightnessMaxReason(
                @BrightnessInfo.BrightnessMaxReason int brightnessMaxReason) {
            mBrightnessMaxReason = brightnessMaxReason;
            return this;
        }
    }
}
+9 −5
Original line number Diff line number Diff line
@@ -1588,7 +1588,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
        // brightness sources (such as an app override) are not saved to the setting, but should be
        // reflected in HBM calculations.
        mBrightnessRangeController.onBrightnessChanged(brightnessState, unthrottledBrightnessState,
                mBrightnessClamperController.getBrightnessMaxReason());
                clampedState.getBrightnessMaxReason());

        // Animate the screen brightness when the screen is on or dozing.
        // Skip the animation when the screen is off or suspended.
@@ -1804,7 +1804,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call

            if (userSetBrightnessChanged
                    || newEvent.getReason().getReason() != BrightnessReason.REASON_TEMPORARY) {
                logBrightnessEvent(newEvent, unthrottledBrightnessState);
                logBrightnessEvent(newEvent, unthrottledBrightnessState, clampedState);
            }
            if (mBrightnessEventRingBuffer != null) {
                mBrightnessEventRingBuffer.append(newEvent);
@@ -1997,6 +1997,9 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
        synchronized (mCachedBrightnessInfo) {
            float stateMax = state != null ? state.getMaxBrightness() : PowerManager.BRIGHTNESS_MAX;
            float stateMin = state != null ? state.getMinBrightness() : PowerManager.BRIGHTNESS_MAX;
            @BrightnessInfo.BrightnessMaxReason int maxReason =
                    state != null ? state.getBrightnessMaxReason()
                            : BrightnessInfo.BRIGHTNESS_MAX_REASON_NONE;
            final float minBrightness = Math.max(stateMin, Math.min(
                    mBrightnessRangeController.getCurrentBrightnessMin(), stateMax));
            final float maxBrightness = Math.min(
@@ -2023,7 +2026,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
                            mBrightnessRangeController.getTransitionPoint());
            changed |=
                    mCachedBrightnessInfo.checkAndSetInt(mCachedBrightnessInfo.brightnessMaxReason,
                            mBrightnessClamperController.getBrightnessMaxReason());
                            maxReason);
            return changed;
        }
    }
@@ -2926,7 +2929,8 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
        return FrameworkStatsLog.DISPLAY_BRIGHTNESS_CHANGED__ENTIRE_REASON__REASON_UNKNOWN;
    }

    private void logBrightnessEvent(BrightnessEvent event, float unmodifiedBrightness) {
    private void logBrightnessEvent(BrightnessEvent event, float unmodifiedBrightness,
            DisplayBrightnessState brightnessState) {
        int modifier = event.getReason().getModifier();
        int flags = event.getFlags();
        // It's easier to check if the brightness is at maximum level using the brightness
@@ -2963,7 +2967,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
                    event.getHbmMode() == BrightnessInfo.HIGH_BRIGHTNESS_MODE_SUNLIGHT,
                    event.getHbmMode() == BrightnessInfo.HIGH_BRIGHTNESS_MODE_HDR,
                    (modifier & BrightnessReason.MODIFIER_LOW_POWER) > 0,
                    mBrightnessClamperController.getBrightnessMaxReason(),
                    brightnessState.getBrightnessMaxReason(),
                    // TODO: (flc) add brightnessMinReason here too.
                    (modifier & BrightnessReason.MODIFIER_DIMMED) > 0,
                    event.isRbcEnabled(),
+2 −12
Original line number Diff line number Diff line
@@ -161,6 +161,7 @@ public class BrightnessClamperController {
        builder.setBrightness(cappedBrightness);
        builder.setMaxBrightness(mBrightnessCap);
        builder.setCustomAnimationRate(mCustomAnimationRate);
        builder.setBrightnessMaxReason(getBrightnessMaxReason());

        if (mClamperType != null) {
            builder.getBrightnessReason().addModifier(BrightnessReason.MODIFIER_THROTTLED);
@@ -185,19 +186,8 @@ public class BrightnessClamperController {
        return builder.build();
    }

    /**
     * See BrightnessThrottler.getBrightnessMaxReason:
     * used in:
     * 1) DPC2.CachedBrightnessInfo to determine changes
     * 2) DPC2.logBrightnessEvent
     * 3) HBMController - for logging
     * Method is called in mHandler thread (DisplayControllerHandler), in the same thread
     * recalculateBrightnessCap and DPC2.updatePowerStateInternal are called.
     * Should be moved to DisplayBrightnessState OR derived from DisplayBrightnessState
     * TODO: b/263362199
     */
    @BrightnessInfo.BrightnessMaxReason
    public int getBrightnessMaxReason() {
    private int getBrightnessMaxReason() {
        if (mClamperType == null) {
            return BrightnessInfo.BRIGHTNESS_MAX_REASON_NONE;
        } else if (mClamperType == Type.THERMAL) {
+6 −1
Original line number Diff line number Diff line
@@ -18,6 +18,8 @@ package com.android.server.display;

import static org.junit.Assert.assertEquals;

import android.hardware.display.BrightnessInfo;

import androidx.test.filters.SmallTest;
import androidx.test.runner.AndroidJUnit4;

@@ -112,7 +114,10 @@ public class DisplayBrightnessStateTest {
                .append("\n    mBrightnessAdjustmentFlag:")
                .append(displayBrightnessState.getBrightnessAdjustmentFlag())
                .append("\n    mIsUserInitiatedChange:")
                .append(displayBrightnessState.isUserInitiatedChange());
                .append(displayBrightnessState.isUserInitiatedChange())
                .append("\n    mBrightnessMaxReason:")
                .append(BrightnessInfo.briMaxReasonToString(
                        displayBrightnessState.getBrightnessMaxReason()));
        return sb.toString();
    }
}
Loading