Merge "Reload DPC values when display device changes" into sc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
52a33adf57
@@ -365,7 +365,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
||||
|
||||
@Nullable
|
||||
private final ColorDisplayServiceInternal mCdsi;
|
||||
private final float[] mNitsRange;
|
||||
private float[] mNitsRange;
|
||||
|
||||
private final HighBrightnessModeController mHbmController;
|
||||
|
||||
@@ -447,6 +447,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
||||
mLogicalDisplay = logicalDisplay;
|
||||
mDisplayId = mLogicalDisplay.getDisplayIdLocked();
|
||||
mDisplayDevice = mLogicalDisplay.getPrimaryDisplayDeviceLocked();
|
||||
mUniqueDisplayId = logicalDisplay.getPrimaryDisplayDeviceLocked().getUniqueId();
|
||||
mHandler = new DisplayControllerHandler(handler.getLooper());
|
||||
|
||||
if (mDisplayId == Display.DEFAULT_DISPLAY) {
|
||||
@@ -462,6 +463,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
||||
mBlanker = blanker;
|
||||
mContext = context;
|
||||
mBrightnessTracker = brightnessTracker;
|
||||
// TODO: b/186428377 update brightness setting when display changes
|
||||
mBrightnessSetting = brightnessSetting;
|
||||
mOnBrightnessChangeRunnable = onBrightnessChangeRunnable;
|
||||
|
||||
@@ -498,13 +500,10 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
||||
mAllowAutoBrightnessWhileDozingConfig = resources.getBoolean(
|
||||
com.android.internal.R.bool.config_allowAutoBrightnessWhileDozing);
|
||||
|
||||
mDisplayDeviceConfig = logicalDisplay.getPrimaryDisplayDeviceLocked()
|
||||
.getDisplayDeviceConfig();
|
||||
|
||||
mDisplayDeviceConfig = logicalDisplay
|
||||
.getPrimaryDisplayDeviceLocked().getDisplayDeviceConfig();
|
||||
mBrightnessRampRateFastDecrease = mDisplayDeviceConfig.getBrightnessRampFastDecrease();
|
||||
mBrightnessRampRateFastIncrease = mDisplayDeviceConfig.getBrightnessRampFastIncrease();
|
||||
mBrightnessRampRateSlowDecrease = mDisplayDeviceConfig.getBrightnessRampSlowDecrease();
|
||||
mBrightnessRampRateSlowIncrease = mDisplayDeviceConfig.getBrightnessRampSlowIncrease();
|
||||
loadBrightnessRampRates();
|
||||
mSkipScreenOnBrightnessRamp = resources.getBoolean(
|
||||
com.android.internal.R.bool.config_skipScreenOnBrightnessRamp);
|
||||
|
||||
@@ -513,66 +512,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
||||
// Seed the cached brightness
|
||||
saveBrightnessInfo(getScreenBrightnessSetting());
|
||||
|
||||
if (mUseSoftwareAutoBrightnessConfig) {
|
||||
final float dozeScaleFactor = resources.getFraction(
|
||||
com.android.internal.R.fraction.config_screenAutoBrightnessDozeScaleFactor,
|
||||
1, 1);
|
||||
|
||||
int[] ambientBrighteningThresholds = resources.getIntArray(
|
||||
com.android.internal.R.array.config_ambientBrighteningThresholds);
|
||||
int[] ambientDarkeningThresholds = resources.getIntArray(
|
||||
com.android.internal.R.array.config_ambientDarkeningThresholds);
|
||||
int[] ambientThresholdLevels = resources.getIntArray(
|
||||
com.android.internal.R.array.config_ambientThresholdLevels);
|
||||
HysteresisLevels ambientBrightnessThresholds = new HysteresisLevels(
|
||||
ambientBrighteningThresholds, ambientDarkeningThresholds,
|
||||
ambientThresholdLevels);
|
||||
|
||||
int[] screenBrighteningThresholds = resources.getIntArray(
|
||||
com.android.internal.R.array.config_screenBrighteningThresholds);
|
||||
int[] screenDarkeningThresholds = resources.getIntArray(
|
||||
com.android.internal.R.array.config_screenDarkeningThresholds);
|
||||
int[] screenThresholdLevels = resources.getIntArray(
|
||||
com.android.internal.R.array.config_screenThresholdLevels);
|
||||
HysteresisLevels screenBrightnessThresholds = new HysteresisLevels(
|
||||
screenBrighteningThresholds, screenDarkeningThresholds, screenThresholdLevels);
|
||||
|
||||
long brighteningLightDebounce = resources.getInteger(
|
||||
com.android.internal.R.integer.config_autoBrightnessBrighteningLightDebounce);
|
||||
long darkeningLightDebounce = resources.getInteger(
|
||||
com.android.internal.R.integer.config_autoBrightnessDarkeningLightDebounce);
|
||||
boolean autoBrightnessResetAmbientLuxAfterWarmUp = resources.getBoolean(
|
||||
com.android.internal.R.bool.config_autoBrightnessResetAmbientLuxAfterWarmUp);
|
||||
|
||||
int lightSensorWarmUpTimeConfig = resources.getInteger(
|
||||
com.android.internal.R.integer.config_lightSensorWarmupTime);
|
||||
int lightSensorRate = resources.getInteger(
|
||||
com.android.internal.R.integer.config_autoBrightnessLightSensorRate);
|
||||
int initialLightSensorRate = resources.getInteger(
|
||||
com.android.internal.R.integer.config_autoBrightnessInitialLightSensorRate);
|
||||
if (initialLightSensorRate == -1) {
|
||||
initialLightSensorRate = lightSensorRate;
|
||||
} else if (initialLightSensorRate > lightSensorRate) {
|
||||
Slog.w(TAG, "Expected config_autoBrightnessInitialLightSensorRate ("
|
||||
+ initialLightSensorRate + ") to be less than or equal to "
|
||||
+ "config_autoBrightnessLightSensorRate (" + lightSensorRate + ").");
|
||||
}
|
||||
|
||||
loadAmbientLightSensor();
|
||||
|
||||
mBrightnessMapper = BrightnessMappingStrategy.create(resources, mDisplayDeviceConfig);
|
||||
if (mBrightnessMapper != null) {
|
||||
mAutomaticBrightnessController = new AutomaticBrightnessController(this,
|
||||
handler.getLooper(), sensorManager, mLightSensor, mBrightnessMapper,
|
||||
lightSensorWarmUpTimeConfig, PowerManager.BRIGHTNESS_MIN,
|
||||
PowerManager.BRIGHTNESS_MAX, dozeScaleFactor, lightSensorRate,
|
||||
initialLightSensorRate, brighteningLightDebounce, darkeningLightDebounce,
|
||||
autoBrightnessResetAmbientLuxAfterWarmUp, ambientBrightnessThresholds,
|
||||
screenBrightnessThresholds, logicalDisplay, context, mHbmController);
|
||||
} else {
|
||||
mUseSoftwareAutoBrightnessConfig = false;
|
||||
}
|
||||
}
|
||||
setUpAutoBrightness(resources, handler);
|
||||
|
||||
mColorFadeEnabled = !ActivityManager.isLowRamDeviceStatic();
|
||||
mColorFadeFadesConfig = resources.getBoolean(
|
||||
@@ -610,13 +550,8 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
||||
mDisplayWhiteBalanceSettings = displayWhiteBalanceSettings;
|
||||
mDisplayWhiteBalanceController = displayWhiteBalanceController;
|
||||
|
||||
if (mDisplayDeviceConfig != null && mDisplayDeviceConfig.getNits() != null) {
|
||||
mNitsRange = mDisplayDeviceConfig.getNits();
|
||||
} else {
|
||||
Slog.w(TAG, "Screen brightness nits configuration is unavailable; falling back");
|
||||
mNitsRange = BrightnessMappingStrategy.getFloatArray(context.getResources()
|
||||
.obtainTypedArray(com.android.internal.R.array.config_screenBrightnessNits));
|
||||
}
|
||||
loadNitsRange(resources);
|
||||
|
||||
if (mDisplayId == Display.DEFAULT_DISPLAY) {
|
||||
mCdsi = LocalServices.getService(ColorDisplayServiceInternal.class);
|
||||
boolean active = mCdsi.setReduceBrightColorsListener(new ReduceBrightColorsListener() {
|
||||
@@ -802,10 +737,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
||||
mDisplayDevice = device;
|
||||
mUniqueDisplayId = uniqueId;
|
||||
mDisplayDeviceConfig = config;
|
||||
|
||||
loadAmbientLightSensor();
|
||||
loadProximitySensor();
|
||||
mHbmController.resetHbmData(token, config.getHighBrightnessModeData());
|
||||
loadFromDisplayDeviceConfig(token);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -846,6 +778,18 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
||||
}
|
||||
}
|
||||
|
||||
private void loadFromDisplayDeviceConfig(IBinder token) {
|
||||
// All properties that depend on the associated DisplayDevice and the DDC must be
|
||||
// updated here.
|
||||
loadAmbientLightSensor();
|
||||
loadBrightnessRampRates();
|
||||
loadProximitySensor();
|
||||
loadNitsRange(mContext.getResources());
|
||||
setUpAutoBrightness(mContext.getResources(), mHandler);
|
||||
reloadReduceBrightColours();
|
||||
mHbmController.resetHbmData(token, mDisplayDeviceConfig.getHighBrightnessModeData());
|
||||
}
|
||||
|
||||
private void sendUpdatePowerState() {
|
||||
synchronized (mLock) {
|
||||
sendUpdatePowerStateLocked();
|
||||
@@ -903,6 +847,98 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
||||
false /*notifyForDescendants*/, mSettingsObserver, UserHandle.USER_ALL);
|
||||
}
|
||||
|
||||
private void setUpAutoBrightness(Resources resources, Handler handler) {
|
||||
if (!mUseSoftwareAutoBrightnessConfig) {
|
||||
return;
|
||||
}
|
||||
|
||||
mBrightnessMapper = BrightnessMappingStrategy.create(resources, mDisplayDeviceConfig);
|
||||
|
||||
if (mBrightnessMapper != null) {
|
||||
final float dozeScaleFactor = resources.getFraction(
|
||||
com.android.internal.R.fraction.config_screenAutoBrightnessDozeScaleFactor,
|
||||
1, 1);
|
||||
|
||||
int[] ambientBrighteningThresholds = resources.getIntArray(
|
||||
com.android.internal.R.array.config_ambientBrighteningThresholds);
|
||||
int[] ambientDarkeningThresholds = resources.getIntArray(
|
||||
com.android.internal.R.array.config_ambientDarkeningThresholds);
|
||||
int[] ambientThresholdLevels = resources.getIntArray(
|
||||
com.android.internal.R.array.config_ambientThresholdLevels);
|
||||
HysteresisLevels ambientBrightnessThresholds = new HysteresisLevels(
|
||||
ambientBrighteningThresholds, ambientDarkeningThresholds,
|
||||
ambientThresholdLevels);
|
||||
|
||||
int[] screenBrighteningThresholds = resources.getIntArray(
|
||||
com.android.internal.R.array.config_screenBrighteningThresholds);
|
||||
int[] screenDarkeningThresholds = resources.getIntArray(
|
||||
com.android.internal.R.array.config_screenDarkeningThresholds);
|
||||
int[] screenThresholdLevels = resources.getIntArray(
|
||||
com.android.internal.R.array.config_screenThresholdLevels);
|
||||
HysteresisLevels screenBrightnessThresholds = new HysteresisLevels(
|
||||
screenBrighteningThresholds, screenDarkeningThresholds, screenThresholdLevels);
|
||||
|
||||
long brighteningLightDebounce = resources.getInteger(
|
||||
com.android.internal.R.integer.config_autoBrightnessBrighteningLightDebounce);
|
||||
long darkeningLightDebounce = resources.getInteger(
|
||||
com.android.internal.R.integer.config_autoBrightnessDarkeningLightDebounce);
|
||||
boolean autoBrightnessResetAmbientLuxAfterWarmUp = resources.getBoolean(
|
||||
com.android.internal.R.bool.config_autoBrightnessResetAmbientLuxAfterWarmUp);
|
||||
|
||||
int lightSensorWarmUpTimeConfig = resources.getInteger(
|
||||
com.android.internal.R.integer.config_lightSensorWarmupTime);
|
||||
int lightSensorRate = resources.getInteger(
|
||||
com.android.internal.R.integer.config_autoBrightnessLightSensorRate);
|
||||
int initialLightSensorRate = resources.getInteger(
|
||||
com.android.internal.R.integer.config_autoBrightnessInitialLightSensorRate);
|
||||
if (initialLightSensorRate == -1) {
|
||||
initialLightSensorRate = lightSensorRate;
|
||||
} else if (initialLightSensorRate > lightSensorRate) {
|
||||
Slog.w(TAG, "Expected config_autoBrightnessInitialLightSensorRate ("
|
||||
+ initialLightSensorRate + ") to be less than or equal to "
|
||||
+ "config_autoBrightnessLightSensorRate (" + lightSensorRate + ").");
|
||||
}
|
||||
|
||||
loadAmbientLightSensor();
|
||||
|
||||
if (mAutomaticBrightnessController != null) {
|
||||
mAutomaticBrightnessController.stop();
|
||||
}
|
||||
mAutomaticBrightnessController = new AutomaticBrightnessController(this,
|
||||
handler.getLooper(), mSensorManager, mLightSensor, mBrightnessMapper,
|
||||
lightSensorWarmUpTimeConfig, PowerManager.BRIGHTNESS_MIN,
|
||||
PowerManager.BRIGHTNESS_MAX, dozeScaleFactor, lightSensorRate,
|
||||
initialLightSensorRate, brighteningLightDebounce, darkeningLightDebounce,
|
||||
autoBrightnessResetAmbientLuxAfterWarmUp, ambientBrightnessThresholds,
|
||||
screenBrightnessThresholds, mLogicalDisplay, mContext, mHbmController);
|
||||
} else {
|
||||
mUseSoftwareAutoBrightnessConfig = false;
|
||||
}
|
||||
}
|
||||
|
||||
private void loadBrightnessRampRates() {
|
||||
mBrightnessRampRateFastDecrease = mDisplayDeviceConfig.getBrightnessRampFastDecrease();
|
||||
mBrightnessRampRateFastIncrease = mDisplayDeviceConfig.getBrightnessRampFastIncrease();
|
||||
mBrightnessRampRateSlowDecrease = mDisplayDeviceConfig.getBrightnessRampSlowDecrease();
|
||||
mBrightnessRampRateSlowIncrease = mDisplayDeviceConfig.getBrightnessRampSlowIncrease();
|
||||
}
|
||||
|
||||
private void loadNitsRange(Resources resources) {
|
||||
if (mDisplayDeviceConfig != null && mDisplayDeviceConfig.getNits() != null) {
|
||||
mNitsRange = mDisplayDeviceConfig.getNits();
|
||||
} else {
|
||||
Slog.w(TAG, "Screen brightness nits configuration is unavailable; falling back");
|
||||
mNitsRange = BrightnessMappingStrategy.getFloatArray(resources
|
||||
.obtainTypedArray(com.android.internal.R.array.config_screenBrightnessNits));
|
||||
}
|
||||
}
|
||||
|
||||
private void reloadReduceBrightColours() {
|
||||
if (mCdsi != null && mCdsi.isReduceBrightColorsActivated()) {
|
||||
applyReduceBrightColorsSplineAdjustment();
|
||||
}
|
||||
}
|
||||
|
||||
private final Animator.AnimatorListener mAnimatorListener = new Animator.AnimatorListener() {
|
||||
@Override
|
||||
public void onAnimationStart(Animator animation) {
|
||||
|
||||
Reference in New Issue
Block a user