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

Commit ea7da9ac authored by Rupesh Bansal's avatar Rupesh Bansal Committed by Android (Google) Code Review
Browse files

Merge "Added mode switch logic to the automatic strategy" into main

parents 0aa5e8c3 ee8ba58a
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -1189,7 +1189,11 @@ public class AutomaticBrightnessController {
        update();
    }

    void switchMode(@AutomaticBrightnessMode int mode) {
    /**
     * Responsible for switching the AutomaticBrightnessMode of the associated display. Also takes
     * care of resetting the short term model wherever required
     */
    public void switchMode(@AutomaticBrightnessMode int mode) {
        if (!mBrightnessMappingStrategyMap.contains(mode)) {
            return;
        }
+7 −6
Original line number Diff line number Diff line
@@ -1334,12 +1334,6 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
                mDisplayStateController.shouldPerformScreenOffTransition());
        state = mPowerState.getScreenState();

        // Switch to doze auto-brightness mode if needed
        if (mFlags.areAutoBrightnessModesEnabled() && mAutomaticBrightnessController != null
                && !mAutomaticBrightnessController.isInIdleMode()) {
            mAutomaticBrightnessController.switchMode(Display.isDozeState(state)
                    ? AUTO_BRIGHTNESS_MODE_DOZE : AUTO_BRIGHTNESS_MODE_DEFAULT);
        }

        DisplayBrightnessState displayBrightnessState = mDisplayBrightnessController
                .updateBrightness(mPowerRequest, state);
@@ -1373,6 +1367,13 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
        final boolean wasShortTermModelActive =
                mAutomaticBrightnessStrategy.isShortTermModelActive();
        if (!mFlags.isRefactorDisplayPowerControllerEnabled()) {
            // Switch to doze auto-brightness mode if needed
            if (mFlags.areAutoBrightnessModesEnabled() && mAutomaticBrightnessController != null
                    && !mAutomaticBrightnessController.isInIdleMode()) {
                mAutomaticBrightnessController.switchMode(Display.isDozeState(state)
                        ? AUTO_BRIGHTNESS_MODE_DOZE : AUTO_BRIGHTNESS_MODE_DEFAULT);
            }

            mAutomaticBrightnessStrategy.setAutoBrightnessState(state,
                    mDisplayBrightnessController.isAllowAutoBrightnessWhileDozingConfig(),
                    mBrightnessReasonTemp.getReason(), mPowerRequest.policy,
+4 −3
Original line number Diff line number Diff line
@@ -122,7 +122,8 @@ public class DisplayBrightnessStrategySelector {
        mInvalidBrightnessStrategy = injector.getInvalidBrightnessStrategy();
        mAutomaticBrightnessStrategy1 =
                (!mDisplayManagerFlags.isRefactorDisplayPowerControllerEnabled()) ? null
                        : injector.getAutomaticBrightnessStrategy1(context, displayId);
                        : injector.getAutomaticBrightnessStrategy1(context, displayId,
                                mDisplayManagerFlags);
        mAutomaticBrightnessStrategy2 =
                (mDisplayManagerFlags.isRefactorDisplayPowerControllerEnabled()) ? null
                        : injector.getAutomaticBrightnessStrategy2(context, displayId);
@@ -343,8 +344,8 @@ public class DisplayBrightnessStrategySelector {
        }

        AutomaticBrightnessStrategy getAutomaticBrightnessStrategy1(Context context,
                int displayId) {
            return new AutomaticBrightnessStrategy(context, displayId);
                int displayId, DisplayManagerFlags displayManagerFlags) {
            return new AutomaticBrightnessStrategy(context, displayId, displayManagerFlags);
        }

        AutomaticBrightnessStrategy2 getAutomaticBrightnessStrategy2(Context context,
+23 −3
Original line number Diff line number Diff line
@@ -17,6 +17,9 @@ package com.android.server.display.brightness.strategy;

import static android.hardware.display.DisplayManagerInternal.DisplayPowerRequest.POLICY_DOZE;

import static com.android.server.display.AutomaticBrightnessController.AUTO_BRIGHTNESS_MODE_DEFAULT;
import static com.android.server.display.AutomaticBrightnessController.AUTO_BRIGHTNESS_MODE_DOZE;

import android.annotation.Nullable;
import android.content.Context;
import android.hardware.display.BrightnessConfiguration;
@@ -33,6 +36,7 @@ import com.android.server.display.brightness.BrightnessReason;
import com.android.server.display.brightness.BrightnessUtils;
import com.android.server.display.brightness.StrategyExecutionRequest;
import com.android.server.display.brightness.StrategySelectionNotifyRequest;
import com.android.server.display.feature.DisplayManagerFlags;

import java.io.PrintWriter;

@@ -98,19 +102,24 @@ public class AutomaticBrightnessStrategy extends AutomaticBrightnessStrategy2

    private Injector mInjector;

    private DisplayManagerFlags mDisplayManagerFlags;

    @VisibleForTesting
    AutomaticBrightnessStrategy(Context context, int displayId, Injector injector) {
    AutomaticBrightnessStrategy(Context context, int displayId, Injector injector,
            DisplayManagerFlags displayManagerFlags) {
        super(context, displayId);
        mContext = context;
        mDisplayId = displayId;
        mAutoBrightnessAdjustment = getAutoBrightnessAdjustmentSetting();
        mPendingAutoBrightnessAdjustment = PowerManager.BRIGHTNESS_INVALID_FLOAT;
        mTemporaryAutoBrightnessAdjustment = PowerManager.BRIGHTNESS_INVALID_FLOAT;
        mDisplayManagerFlags  = displayManagerFlags;
        mInjector = (injector == null) ? new RealInjector() : injector;
    }

    public AutomaticBrightnessStrategy(Context context, int displayId) {
        this(context, displayId, null);
    public AutomaticBrightnessStrategy(Context context, int displayId,
            DisplayManagerFlags displayManagerFlags) {
        this(context, displayId, null, displayManagerFlags);
    }

    /**
@@ -120,6 +129,7 @@ public class AutomaticBrightnessStrategy extends AutomaticBrightnessStrategy2
    public void setAutoBrightnessState(int targetDisplayState,
            boolean allowAutoBrightnessWhileDozingConfig, int brightnessReason, int policy,
            float lastUserSetScreenBrightness, boolean userSetBrightnessChanged) {
        switchMode(targetDisplayState);
        final boolean autoBrightnessEnabledInDoze =
                allowAutoBrightnessWhileDozingConfig && policy == POLICY_DOZE;
        mIsAutoBrightnessEnabled = shouldUseAutoBrightness()
@@ -479,6 +489,16 @@ public class AutomaticBrightnessStrategy extends AutomaticBrightnessStrategy2
        }
    }


    private void switchMode(int state) {
        if (mDisplayManagerFlags.areAutoBrightnessModesEnabled()
                && mAutomaticBrightnessController != null
                && !mAutomaticBrightnessController.isInIdleMode()) {
            mAutomaticBrightnessController.switchMode(Display.isDozeState(state)
                    ? AUTO_BRIGHTNESS_MODE_DOZE : AUTO_BRIGHTNESS_MODE_DEFAULT);
        }
    }

    /**
     * Evaluates if there are any temporary auto-brightness adjustments which is not applied yet.
     * Temporary brightness adjustments happen when the user moves the brightness slider in the
+1 −1
Original line number Diff line number Diff line
@@ -138,7 +138,7 @@ public final class DisplayBrightnessStrategySelectorTest {

                @Override
                AutomaticBrightnessStrategy getAutomaticBrightnessStrategy1(Context context,
                        int displayId) {
                        int displayId, DisplayManagerFlags displayManagerFlags) {
                    return mAutomaticBrightnessStrategy;
                }

Loading