Merge changes I3d1b674f,I03663856
* changes: Revert "Revert "Notify display brightness changed due to brightness transforms"" Cancel brightness slider animation before checking its value
This commit is contained in:
committed by
Android (Google) Code Review
commit
9533ab0415
@@ -398,6 +398,11 @@ public class BrightnessController implements ToggleSlider.Listener, MirroredBrig
|
||||
min = mBrightnessMin;
|
||||
max = mBrightnessMax;
|
||||
}
|
||||
|
||||
// Ensure the slider is in a fixed position first, then check if we should animate.
|
||||
if (mSliderAnimator != null && mSliderAnimator.isStarted()) {
|
||||
mSliderAnimator.cancel();
|
||||
}
|
||||
// convertGammaToLinearFloat returns 0-1
|
||||
if (BrightnessSynchronizer.floatEquals(brightnessValue,
|
||||
convertGammaToLinearFloat(mControl.getValue(), min, max))) {
|
||||
@@ -420,9 +425,6 @@ public class BrightnessController implements ToggleSlider.Listener, MirroredBrig
|
||||
mControl.setValue(target);
|
||||
mControlValueInitialized = true;
|
||||
}
|
||||
if (mSliderAnimator != null && mSliderAnimator.isStarted()) {
|
||||
mSliderAnimator.cancel();
|
||||
}
|
||||
mSliderAnimator = ValueAnimator.ofInt(mControl.getValue(), target);
|
||||
mSliderAnimator.addUpdateListener((ValueAnimator animation) -> {
|
||||
mExternalChange = true;
|
||||
|
||||
@@ -50,6 +50,8 @@ import android.os.UserHandle;
|
||||
import android.provider.Settings;
|
||||
import android.util.Log;
|
||||
import android.util.MathUtils;
|
||||
import android.util.MutableFloat;
|
||||
import android.util.MutableInt;
|
||||
import android.util.Slog;
|
||||
import android.util.TimeUtils;
|
||||
import android.view.Display;
|
||||
@@ -1390,6 +1392,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
||||
|
||||
// Animate the screen brightness when the screen is on or dozing.
|
||||
// Skip the animation when the screen is off or suspended or transition to/from VR.
|
||||
boolean brightnessAdjusted = false;
|
||||
if (!mPendingScreenOff) {
|
||||
if (mSkipScreenOnBrightnessRamp) {
|
||||
if (state == Display.STATE_ON) {
|
||||
@@ -1482,15 +1485,19 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
||||
// slider event so notify as if the system changed the brightness.
|
||||
userInitiatedChange = false;
|
||||
}
|
||||
notifyBrightnessChanged(brightnessState, userInitiatedChange,
|
||||
notifyBrightnessTrackerChanged(brightnessState, userInitiatedChange,
|
||||
hadUserBrightnessPoint);
|
||||
}
|
||||
|
||||
// We save the brightness info *after* the brightness setting has been changed and
|
||||
// adjustments made so that the brightness info reflects the latest value.
|
||||
saveBrightnessInfo(getScreenBrightnessSetting(), animateValue);
|
||||
brightnessAdjusted = saveBrightnessInfo(getScreenBrightnessSetting(), animateValue);
|
||||
} else {
|
||||
saveBrightnessInfo(getScreenBrightnessSetting());
|
||||
brightnessAdjusted = saveBrightnessInfo(getScreenBrightnessSetting());
|
||||
}
|
||||
|
||||
if (brightnessAdjusted) {
|
||||
postBrightnessChangeRunnable();
|
||||
}
|
||||
|
||||
// Log any changes to what is currently driving the brightness setting.
|
||||
@@ -1606,31 +1613,50 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
||||
public BrightnessInfo getBrightnessInfo() {
|
||||
synchronized (mCachedBrightnessInfo) {
|
||||
return new BrightnessInfo(
|
||||
mCachedBrightnessInfo.brightness,
|
||||
mCachedBrightnessInfo.adjustedBrightness,
|
||||
mCachedBrightnessInfo.brightnessMin,
|
||||
mCachedBrightnessInfo.brightnessMax,
|
||||
mCachedBrightnessInfo.hbmMode,
|
||||
mCachedBrightnessInfo.highBrightnessTransitionPoint);
|
||||
mCachedBrightnessInfo.brightness.value,
|
||||
mCachedBrightnessInfo.adjustedBrightness.value,
|
||||
mCachedBrightnessInfo.brightnessMin.value,
|
||||
mCachedBrightnessInfo.brightnessMax.value,
|
||||
mCachedBrightnessInfo.hbmMode.value,
|
||||
mCachedBrightnessInfo.hbmTransitionPoint.value);
|
||||
}
|
||||
}
|
||||
|
||||
private void saveBrightnessInfo(float brightness) {
|
||||
saveBrightnessInfo(brightness, brightness);
|
||||
private boolean saveBrightnessInfo(float brightness) {
|
||||
return saveBrightnessInfo(brightness, brightness);
|
||||
}
|
||||
|
||||
private void saveBrightnessInfo(float brightness, float adjustedBrightness) {
|
||||
private boolean saveBrightnessInfo(float brightness, float adjustedBrightness) {
|
||||
synchronized (mCachedBrightnessInfo) {
|
||||
mCachedBrightnessInfo.brightness = brightness;
|
||||
mCachedBrightnessInfo.adjustedBrightness = adjustedBrightness;
|
||||
mCachedBrightnessInfo.brightnessMin = mHbmController.getCurrentBrightnessMin();
|
||||
mCachedBrightnessInfo.brightnessMax = mHbmController.getCurrentBrightnessMax();
|
||||
mCachedBrightnessInfo.hbmMode = mHbmController.getHighBrightnessMode();
|
||||
mCachedBrightnessInfo.highBrightnessTransitionPoint =
|
||||
mHbmController.getTransitionPoint();
|
||||
boolean changed = false;
|
||||
|
||||
changed |=
|
||||
mCachedBrightnessInfo.checkAndSetFloat(mCachedBrightnessInfo.brightness,
|
||||
brightness);
|
||||
changed |=
|
||||
mCachedBrightnessInfo.checkAndSetFloat(mCachedBrightnessInfo.adjustedBrightness,
|
||||
adjustedBrightness);
|
||||
changed |=
|
||||
mCachedBrightnessInfo.checkAndSetFloat(mCachedBrightnessInfo.brightnessMin,
|
||||
mHbmController.getCurrentBrightnessMin());
|
||||
changed |=
|
||||
mCachedBrightnessInfo.checkAndSetFloat(mCachedBrightnessInfo.brightnessMax,
|
||||
mHbmController.getCurrentBrightnessMax());
|
||||
changed |=
|
||||
mCachedBrightnessInfo.checkAndSetInt(mCachedBrightnessInfo.hbmMode,
|
||||
mHbmController.getHighBrightnessMode());
|
||||
changed |=
|
||||
mCachedBrightnessInfo.checkAndSetFloat(mCachedBrightnessInfo.hbmTransitionPoint,
|
||||
mHbmController.getTransitionPoint());
|
||||
|
||||
return changed;
|
||||
}
|
||||
}
|
||||
|
||||
void postBrightnessChangeRunnable() {
|
||||
mHandler.post(mOnBrightnessChangeRunnable);
|
||||
}
|
||||
|
||||
private HighBrightnessModeController createHbmControllerLocked() {
|
||||
final DisplayDevice device = mLogicalDisplay.getPrimaryDisplayDeviceLocked();
|
||||
final DisplayDeviceConfig ddConfig = device.getDisplayDeviceConfig();
|
||||
@@ -1645,7 +1671,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
||||
displayUniqueId, PowerManager.BRIGHTNESS_MIN, PowerManager.BRIGHTNESS_MAX, hbmData,
|
||||
() -> {
|
||||
sendUpdatePowerStateLocked();
|
||||
mHandler.post(mOnBrightnessChangeRunnable);
|
||||
postBrightnessChangeRunnable();
|
||||
// TODO(b/192258832): Switch the HBMChangeCallback to a listener pattern.
|
||||
if (mAutomaticBrightnessController != null) {
|
||||
mAutomaticBrightnessController.update();
|
||||
@@ -2147,7 +2173,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
||||
private void setCurrentScreenBrightness(float brightnessValue) {
|
||||
if (brightnessValue != mCurrentScreenBrightnessSetting) {
|
||||
mCurrentScreenBrightnessSetting = brightnessValue;
|
||||
mHandler.post(mOnBrightnessChangeRunnable);
|
||||
postBrightnessChangeRunnable();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2199,7 +2225,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
||||
return true;
|
||||
}
|
||||
|
||||
private void notifyBrightnessChanged(float brightness, boolean userInitiated,
|
||||
private void notifyBrightnessTrackerChanged(float brightness, boolean userInitiated,
|
||||
boolean hadUserDataPoint) {
|
||||
final float brightnessInNits = convertToNits(brightness);
|
||||
if (mPowerRequest.useAutoBrightness && brightnessInNits >= 0.0f
|
||||
@@ -2309,16 +2335,17 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
||||
pw.println(" mColorFadeFadesConfig=" + mColorFadeFadesConfig);
|
||||
pw.println(" mColorFadeEnabled=" + mColorFadeEnabled);
|
||||
synchronized (mCachedBrightnessInfo) {
|
||||
pw.println(" mCachedBrightnessInfo.brightness=" + mCachedBrightnessInfo.brightness);
|
||||
pw.println(" mCachedBrightnessInfo.brightness=" +
|
||||
mCachedBrightnessInfo.brightness.value);
|
||||
pw.println(" mCachedBrightnessInfo.adjustedBrightness=" +
|
||||
mCachedBrightnessInfo.adjustedBrightness);
|
||||
mCachedBrightnessInfo.adjustedBrightness.value);
|
||||
pw.println(" mCachedBrightnessInfo.brightnessMin=" +
|
||||
mCachedBrightnessInfo.brightnessMin);
|
||||
mCachedBrightnessInfo.brightnessMin.value);
|
||||
pw.println(" mCachedBrightnessInfo.brightnessMax=" +
|
||||
mCachedBrightnessInfo.brightnessMax);
|
||||
pw.println(" mCachedBrightnessInfo.hbmMode=" + mCachedBrightnessInfo.hbmMode);
|
||||
pw.println(" mCachedBrightnessInfo.highBrightnessTransitionPoint=" +
|
||||
mCachedBrightnessInfo.highBrightnessTransitionPoint);
|
||||
mCachedBrightnessInfo.brightnessMax.value);
|
||||
pw.println(" mCachedBrightnessInfo.hbmMode=" + mCachedBrightnessInfo.hbmMode.value);
|
||||
pw.println(" mCachedBrightnessInfo.hbmTransitionPoint=" +
|
||||
mCachedBrightnessInfo.hbmTransitionPoint.value);
|
||||
}
|
||||
pw.println(" mDisplayBlanksAfterDozeConfig=" + mDisplayBlanksAfterDozeConfig);
|
||||
pw.println(" mBrightnessBucketsInDozeConfig=" + mBrightnessBucketsInDozeConfig);
|
||||
@@ -2476,7 +2503,10 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
||||
private void reportStats(float brightness) {
|
||||
float hbmTransitionPoint = PowerManager.BRIGHTNESS_MAX;
|
||||
synchronized(mCachedBrightnessInfo) {
|
||||
hbmTransitionPoint = mCachedBrightnessInfo.highBrightnessTransitionPoint;
|
||||
if (mCachedBrightnessInfo.hbmTransitionPoint == null) {
|
||||
return;
|
||||
}
|
||||
hbmTransitionPoint = mCachedBrightnessInfo.hbmTransitionPoint.value;
|
||||
}
|
||||
|
||||
final boolean aboveTransition = brightness > hbmTransitionPoint;
|
||||
@@ -2773,11 +2803,31 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
||||
}
|
||||
|
||||
static class CachedBrightnessInfo {
|
||||
public float brightness;
|
||||
public float adjustedBrightness;
|
||||
public float brightnessMin;
|
||||
public float brightnessMax;
|
||||
public int hbmMode;
|
||||
public float highBrightnessTransitionPoint;
|
||||
public MutableFloat brightness = new MutableFloat(PowerManager.BRIGHTNESS_INVALID_FLOAT);
|
||||
public MutableFloat adjustedBrightness =
|
||||
new MutableFloat(PowerManager.BRIGHTNESS_INVALID_FLOAT);
|
||||
public MutableFloat brightnessMin =
|
||||
new MutableFloat(PowerManager.BRIGHTNESS_INVALID_FLOAT);
|
||||
public MutableFloat brightnessMax =
|
||||
new MutableFloat(PowerManager.BRIGHTNESS_INVALID_FLOAT);
|
||||
public MutableInt hbmMode = new MutableInt(BrightnessInfo.HIGH_BRIGHTNESS_MODE_OFF);
|
||||
public MutableFloat hbmTransitionPoint =
|
||||
new MutableFloat(HighBrightnessModeController.HBM_TRANSITION_POINT_INVALID);
|
||||
|
||||
public boolean checkAndSetFloat(MutableFloat mf, float f) {
|
||||
if (mf.value != f) {
|
||||
mf.value = f;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean checkAndSetInt(MutableInt mi, int i) {
|
||||
if (mi.value != i) {
|
||||
mi.value = i;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user