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

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

Merge "Using DisplayManagerFlags to decide if NormalBrightnessController is enabled" into main

parents 57db6a96 faf479b2
Loading
Loading
Loading
Loading
+6 −8
Original line number Diff line number Diff line
@@ -19,10 +19,9 @@ package com.android.server.display;
import android.hardware.display.BrightnessInfo;
import android.os.Handler;
import android.os.IBinder;
import android.provider.DeviceConfigInterface;

import com.android.server.display.brightness.clamper.HdrClamper;
import com.android.server.display.feature.DeviceConfigParameterProvider;
import com.android.server.display.feature.DisplayManagerFlags;

import java.io.PrintWriter;
import java.util.function.BooleanSupplier;
@@ -42,19 +41,19 @@ class BrightnessRangeController {


    BrightnessRangeController(HighBrightnessModeController hbmController,
            Runnable modeChangeCallback, DisplayDeviceConfig displayDeviceConfig, Handler handler) {
            Runnable modeChangeCallback, DisplayDeviceConfig displayDeviceConfig, Handler handler,
            DisplayManagerFlags flags) {
        this(hbmController, modeChangeCallback, displayDeviceConfig,
                new HdrClamper(modeChangeCallback::run, new Handler(handler.getLooper())),
                new DeviceConfigParameterProvider(DeviceConfigInterface.REAL));
                new HdrClamper(modeChangeCallback::run, new Handler(handler.getLooper())), flags);
    }

    BrightnessRangeController(HighBrightnessModeController hbmController,
            Runnable modeChangeCallback, DisplayDeviceConfig displayDeviceConfig,
            HdrClamper hdrClamper, DeviceConfigParameterProvider configParameterProvider) {
            HdrClamper hdrClamper, DisplayManagerFlags flags) {
        mHbmController = hbmController;
        mModeChangeCallback = modeChangeCallback;
        mUseNbmController = configParameterProvider.isNormalBrightnessControllerFeatureEnabled();
        mUseHdrClamper = false;
        mUseNbmController = flags.isNbmControllerEnabled();
        mNormalBrightnessModeController.resetNbmData(displayDeviceConfig.getLuxThrottlingData());
        mHdrClamper = hdrClamper;
    }
@@ -64,7 +63,6 @@ class BrightnessRangeController {
        pw.println("  mUseNormalBrightnessController=" + mUseNbmController);
        mHbmController.dump(pw);
        mNormalBrightnessModeController.dump(pw);

    }

    void onAmbientLuxChange(float ambientLux) {
+2 −2
Original line number Diff line number Diff line
@@ -3267,12 +3267,12 @@ public final class DisplayManagerService extends SystemService {
            displayPowerController = new DisplayPowerController2(
                    mContext, /* injector= */ null, mDisplayPowerCallbacks, mPowerHandler,
                    mSensorManager, mDisplayBlanker, display, mBrightnessTracker, brightnessSetting,
                    () -> handleBrightnessChange(display), hbmMetadata, mBootCompleted);
                    () -> handleBrightnessChange(display), hbmMetadata, mBootCompleted, mFlags);
        } else {
            displayPowerController = new DisplayPowerController(
                    mContext, /* injector= */ null, mDisplayPowerCallbacks, mPowerHandler,
                    mSensorManager, mDisplayBlanker, display, mBrightnessTracker, brightnessSetting,
                    () -> handleBrightnessChange(display), hbmMetadata, mBootCompleted);
                    () -> handleBrightnessChange(display), hbmMetadata, mBootCompleted, mFlags);
        }
        mDisplayPowerControllers.append(display.getDisplayIdLocked(), displayPowerController);
        return displayPowerController;
+3 −2
Original line number Diff line number Diff line
@@ -75,6 +75,7 @@ import com.android.server.display.brightness.BrightnessEvent;
import com.android.server.display.brightness.BrightnessReason;
import com.android.server.display.color.ColorDisplayService.ColorDisplayServiceInternal;
import com.android.server.display.color.ColorDisplayService.ReduceBrightColorsListener;
import com.android.server.display.feature.DisplayManagerFlags;
import com.android.server.display.layout.Layout;
import com.android.server.display.utils.SensorUtils;
import com.android.server.display.whitebalance.DisplayWhiteBalanceController;
@@ -592,7 +593,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
            SensorManager sensorManager, DisplayBlanker blanker, LogicalDisplay logicalDisplay,
            BrightnessTracker brightnessTracker, BrightnessSetting brightnessSetting,
            Runnable onBrightnessChangeRunnable, HighBrightnessModeMetadata hbmMetadata,
            boolean bootCompleted) {
            boolean bootCompleted, DisplayManagerFlags flags) {

        mInjector = injector != null ? injector : new Injector();
        mClock = mInjector.getClock();
@@ -677,7 +678,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
        HighBrightnessModeController hbmController = createHbmControllerLocked(modeChangeCallback);

        mBrightnessRangeController = new BrightnessRangeController(hbmController,
                modeChangeCallback, mDisplayDeviceConfig, mHandler);
                modeChangeCallback, mDisplayDeviceConfig, mHandler, flags);

        mBrightnessThrottler = createBrightnessThrottlerLocked();

+6 −4
Original line number Diff line number Diff line
@@ -77,6 +77,7 @@ import com.android.server.display.brightness.clamper.BrightnessClamperController
import com.android.server.display.brightness.strategy.AutomaticBrightnessStrategy;
import com.android.server.display.color.ColorDisplayService.ColorDisplayServiceInternal;
import com.android.server.display.color.ColorDisplayService.ReduceBrightColorsListener;
import com.android.server.display.feature.DisplayManagerFlags;
import com.android.server.display.layout.Layout;
import com.android.server.display.state.DisplayStateController;
import com.android.server.display.utils.SensorUtils;
@@ -472,7 +473,7 @@ final class DisplayPowerController2 implements AutomaticBrightnessController.Cal
            SensorManager sensorManager, DisplayBlanker blanker, LogicalDisplay logicalDisplay,
            BrightnessTracker brightnessTracker, BrightnessSetting brightnessSetting,
            Runnable onBrightnessChangeRunnable, HighBrightnessModeMetadata hbmMetadata,
            boolean bootCompleted) {
            boolean bootCompleted, DisplayManagerFlags flags) {

        mInjector = injector != null ? injector : new Injector();
        mClock = mInjector.getClock();
@@ -540,7 +541,7 @@ final class DisplayPowerController2 implements AutomaticBrightnessController.Cal
        mBrightnessThrottler = createBrightnessThrottlerLocked();

        mBrightnessRangeController = mInjector.getBrightnessRangeController(hbmController,
                modeChangeCallback, mDisplayDeviceConfig, mHandler);
                modeChangeCallback, mDisplayDeviceConfig, mHandler, flags);

        mDisplayBrightnessController =
                new DisplayBrightnessController(context, null,
@@ -2977,9 +2978,10 @@ final class DisplayPowerController2 implements AutomaticBrightnessController.Cal

        BrightnessRangeController getBrightnessRangeController(
                HighBrightnessModeController hbmController, Runnable modeChangeCallback,
                DisplayDeviceConfig displayDeviceConfig, Handler handler) {
                DisplayDeviceConfig displayDeviceConfig, Handler handler,
                DisplayManagerFlags flags) {
            return new BrightnessRangeController(hbmController,
                    modeChangeCallback, displayDeviceConfig, handler);
                    modeChangeCallback, displayDeviceConfig, handler, flags);
        }

        DisplayWhiteBalanceController getDisplayWhiteBalanceController(Handler handler,
+55 −30
Original line number Diff line number Diff line
@@ -30,8 +30,53 @@ import java.util.function.Supplier;
public class DisplayManagerFlags {
    private static final boolean DEBUG = false;
    private static final String TAG = "DisplayManagerFlags";
    private boolean mIsConnectedDisplayManagementEnabled = false;
    private boolean mIsConnectedDisplayManagementEnabledSet = false;

    private final FlagState mConnectedDisplayManagementFlagState = new FlagState(
            Flags.FLAG_ENABLE_CONNECTED_DISPLAY_MANAGEMENT,
            Flags::enableConnectedDisplayManagement);

    private final FlagState mNbmControllerFlagState = new FlagState(
            Flags.FLAG_ENABLE_NBM_CONTROLLER,
            Flags::enableNbmController);

    /** Returns whether connected display management is enabled or not. */
    public boolean isConnectedDisplayManagementEnabled() {
        return mConnectedDisplayManagementFlagState.isEnabled();
    }

    /** Returns whether hdr clamper is enabled on not*/
    public boolean isNbmControllerEnabled() {
        return mNbmControllerFlagState.isEnabled();
    }

    private static class FlagState {

        private final String mName;

        private final Supplier<Boolean> mFlagFunction;
        private boolean mEnabledSet;
        private boolean mEnabled;

        private FlagState(String name, Supplier<Boolean> flagFunction) {
            mName = name;
            mFlagFunction = flagFunction;
        }

        // TODO(b/297159910): Simplify using READ-ONLY flags when available.
        private boolean isEnabled() {
            if (mEnabledSet) {
                if (DEBUG) {
                    Slog.d(TAG, mName + ": mEnabled. Recall = " + mEnabled);
                }
                return mEnabled;
            }
            mEnabled = flagOrSystemProperty(mFlagFunction, mName);
            if (DEBUG) {
                Slog.d(TAG, mName + ": mEnabled. Flag value = " + mEnabled);
            }
            mEnabledSet = true;
            return mEnabled;
        }

        private boolean flagOrSystemProperty(Supplier<Boolean> flagFunction, String flagName) {
            // TODO(b/299462337) Remove when the infrastructure is ready.
@@ -48,25 +93,5 @@ public class DisplayManagerFlags {
                return false;
            }
        }

    // TODO(b/297159910): Simplify using READ-ONLY flags when available.
    /** Returns whether connected display management is enabled or not. */
    public boolean isConnectedDisplayManagementEnabled() {
        if (mIsConnectedDisplayManagementEnabledSet) {
            if (DEBUG) {
                Slog.d(TAG, "isConnectedDisplayManagementEnabled. Recall = "
                                    + mIsConnectedDisplayManagementEnabled);
            }
            return mIsConnectedDisplayManagementEnabled;
        }
        mIsConnectedDisplayManagementEnabled =
                flagOrSystemProperty(Flags::enableConnectedDisplayManagement,
                        Flags.FLAG_ENABLE_CONNECTED_DISPLAY_MANAGEMENT);
        if (DEBUG) {
            Slog.d(TAG, "isConnectedDisplayManagementEnabled. Flag value = "
                                + mIsConnectedDisplayManagementEnabled);
        }
        mIsConnectedDisplayManagementEnabledSet = true;
        return mIsConnectedDisplayManagementEnabled;
    }
}
Loading