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

Commit ea6ac334 authored by Stas Zakrevskyi's avatar Stas Zakrevskyi
Browse files

Add MINMODE brightness modifier

Adding a new modifier that caps the brightness when MINMODE is active, using a Global Settings.

Bug: 433557124
Test: BrightnessMinModeModifierTest
Test: manual with adb commands
Flag: com.android.server.display.feature.flags.minmode_cap_brightness_enabled
Change-Id: I53359ce7959679c4911ed3d561d761c34528b482
parent 6f8d213f
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -64,7 +64,8 @@ public final class BrightnessInfo implements Parcelable {
                BRIGHTNESS_MAX_REASON_THERMAL,
                BRIGHTNESS_MAX_REASON_POWER_IC,
                BRIGHTNESS_MAX_REASON_WEAR_BEDTIME_MODE,
                BRIGHTNESS_MAX_REASON_MODES
                BRIGHTNESS_MAX_REASON_MODES,
                BRIGHTNESS_MAX_REASON_MINMODE
            })
    @Retention(RetentionPolicy.SOURCE)
    public @interface BrightnessMaxReason {}
@@ -94,6 +95,11 @@ public final class BrightnessInfo implements Parcelable {
     */
    public static final int BRIGHTNESS_MAX_REASON_MODES = 4;

    /**
     * Maximum brightness is restricted due to the MinMode
     */
    public static final int BRIGHTNESS_MAX_REASON_MINMODE = 5;

    /** Brightness */
    public final float brightness;

+8 −1
Original line number Diff line number Diff line
@@ -12494,7 +12494,7 @@ public final class Settings {
         * backup_finished_notification_receivers  (String[])
         * </pre>
         *
         * backup_finished_notification_receivers uses ":" as delimeter for values.
         * backup_finished_notification_receivers uses ":" as delimiter for values.
         *
         * <p>
         * Type: string
@@ -20341,6 +20341,13 @@ public final class Settings {
        public static final String WATCH_RANGING_SUPPORTED_BY_PRIMARY_DEVICE =
                "watch_ranging_supported_by_primary_device";
        /**
         * Indicates whether the device is in minmode.
         *
         * @hide
         */
        public static final String MINMODE_ACTIVE = "minmode_active";
        /**
         * Settings migrated from Wear OS settings provider.
         * @hide
+1 −0
Original line number Diff line number Diff line
@@ -131,5 +131,6 @@ public class GlobalSettings {
        Settings.Global.USER_SWITCHER_ENABLED,
        Settings.Global.GLOBAL_ACTIONS_TIMEOUT_MILLIS,
        Settings.Global.WATCH_RANGING_SUPPORTED_BY_PRIMARY_DEVICE,
        Settings.Global.MINMODE_ACTIVE,
    };
}
+1 −0
Original line number Diff line number Diff line
@@ -483,5 +483,6 @@ public class GlobalSettingsValidators {
        VALIDATORS.put(Global.GLOBAL_ACTIONS_TIMEOUT_MILLIS, NON_NEGATIVE_INTEGER_VALIDATOR);
        VALIDATORS.put(Global.WATCH_RANGING_SUPPORTED_BY_PRIMARY_DEVICE,
                new InclusiveIntegerRangeValidator(0, 1));
        VALIDATORS.put(Global.MINMODE_ACTIVE, BOOLEAN_VALIDATOR);
    }
}
+20 −0
Original line number Diff line number Diff line
@@ -921,6 +921,11 @@ public class DisplayDeviceConfig {
     */
    private float mBrightnessCapForWearBedtimeMode;

    /**
     * Maximum screen brightness setting when screen brightness capped in MinMode.
     */
    private float mBrightnessCapForMinMode;

    private boolean mVrrSupportEnabled;

    @Nullable
@@ -1700,6 +1705,13 @@ public class DisplayDeviceConfig {
        return mBrightnessCapForWearBedtimeMode;
    }

    /**
     * @return Maximum screen brightness setting when screen brightness capped in MinMode.
     */
    public float getBrightnessCapForMinMode() {
        return mBrightnessCapForMinMode;
    }

    /**
     * @return true if display supports dvrr
     */
@@ -1921,6 +1933,7 @@ public class DisplayDeviceConfig {
                mHdrBrightnessData = HdrBrightnessData.loadConfig(config, transitionPointProvider);
                loadBrightnessCapForWearBedtimeMode(config);
                loadIdleScreenRefreshRateTimeoutConfigs(config);
                loadBrightnessCapForMinMode(config);
                mVrrSupportEnabled = config.getSupportsVrr();
                loadDozeBrightness(config);
            } else {
@@ -3068,6 +3081,13 @@ public class DisplayDeviceConfig {
                        .config_screenBrightnessCapForWearBedtimeMode));
    }

    private void loadBrightnessCapForMinMode(DisplayConfiguration config) {
        HighBrightnessMode hbm = config.getHighBrightnessMode();
        float hbmTransitionPoint = hbm != null ? hbm.getTransitionPoint_all().floatValue()
                    : PowerManager.BRIGHTNESS_MAX;
        mBrightnessCapForMinMode = hbmTransitionPoint;
    }

    /**
     * Container for Power throttling configuration data.
     * TODO(b/302814899): extract to separate class.
Loading