Loading services/core/java/com/android/server/display/BrightnessRangeController.java +6 −8 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; } Loading @@ -64,7 +63,6 @@ class BrightnessRangeController { pw.println(" mUseNormalBrightnessController=" + mUseNbmController); mHbmController.dump(pw); mNormalBrightnessModeController.dump(pw); } void onAmbientLuxChange(float ambientLux) { Loading services/core/java/com/android/server/display/DisplayManagerService.java +2 −2 Original line number Diff line number Diff line Loading @@ -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; Loading services/core/java/com/android/server/display/DisplayPowerController.java +3 −2 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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(); Loading Loading @@ -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(); Loading services/core/java/com/android/server/display/DisplayPowerController2.java +6 −4 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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(); Loading Loading @@ -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, Loading Loading @@ -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, Loading services/core/java/com/android/server/display/feature/DisplayManagerFlags.java +55 −30 Original line number Diff line number Diff line Loading @@ -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. Loading @@ -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
services/core/java/com/android/server/display/BrightnessRangeController.java +6 −8 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; } Loading @@ -64,7 +63,6 @@ class BrightnessRangeController { pw.println(" mUseNormalBrightnessController=" + mUseNbmController); mHbmController.dump(pw); mNormalBrightnessModeController.dump(pw); } void onAmbientLuxChange(float ambientLux) { Loading
services/core/java/com/android/server/display/DisplayManagerService.java +2 −2 Original line number Diff line number Diff line Loading @@ -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; Loading
services/core/java/com/android/server/display/DisplayPowerController.java +3 −2 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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(); Loading Loading @@ -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(); Loading
services/core/java/com/android/server/display/DisplayPowerController2.java +6 −4 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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(); Loading Loading @@ -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, Loading Loading @@ -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, Loading
services/core/java/com/android/server/display/feature/DisplayManagerFlags.java +55 −30 Original line number Diff line number Diff line Loading @@ -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. Loading @@ -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; } }