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

Commit ee8ba58a authored by Rupesh Bansal's avatar Rupesh Bansal
Browse files

Added mode switch logic to the automatic strategy

Bug: 339794388
Test: com.android.server.display.brightness.strategy
Change-Id: I373f963110c52c6f0b27d4ff94c1ed3f8d78a8cc
parent a3dc0933
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
@@ -1333,12 +1333,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);
@@ -1372,6 +1366,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
@@ -118,7 +118,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);
@@ -330,8 +331,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
@@ -135,7 +135,7 @@ public final class DisplayBrightnessStrategySelectorTest {

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

Loading