Merge "Notify display brightness changed due to brightness transforms" into sc-v2-dev am: 272775d306
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/16391518 Change-Id: Ifeb42e98c5f4de2b5e13697dd2f2a75653a974c4
This commit is contained in:
@@ -50,6 +50,8 @@ import android.os.UserHandle;
|
|||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.util.MathUtils;
|
import android.util.MathUtils;
|
||||||
|
import android.util.MutableFloat;
|
||||||
|
import android.util.MutableInt;
|
||||||
import android.util.Slog;
|
import android.util.Slog;
|
||||||
import android.util.TimeUtils;
|
import android.util.TimeUtils;
|
||||||
import android.view.Display;
|
import android.view.Display;
|
||||||
@@ -1323,6 +1325,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
|||||||
|
|
||||||
// Animate the screen brightness when the screen is on or dozing.
|
// 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.
|
// Skip the animation when the screen is off or suspended or transition to/from VR.
|
||||||
|
boolean brightnessAdjusted = false;
|
||||||
if (!mPendingScreenOff) {
|
if (!mPendingScreenOff) {
|
||||||
if (mSkipScreenOnBrightnessRamp) {
|
if (mSkipScreenOnBrightnessRamp) {
|
||||||
if (state == Display.STATE_ON) {
|
if (state == Display.STATE_ON) {
|
||||||
@@ -1410,15 +1413,19 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
|||||||
// slider event so notify as if the system changed the brightness.
|
// slider event so notify as if the system changed the brightness.
|
||||||
userInitiatedChange = false;
|
userInitiatedChange = false;
|
||||||
}
|
}
|
||||||
notifyBrightnessChanged(brightnessState, userInitiatedChange,
|
notifyBrightnessTrackerChanged(brightnessState, userInitiatedChange,
|
||||||
hadUserBrightnessPoint);
|
hadUserBrightnessPoint);
|
||||||
}
|
}
|
||||||
|
|
||||||
// We save the brightness info *after* the brightness setting has been changed and
|
// We save the brightness info *after* the brightness setting has been changed and
|
||||||
// adjustments made so that the brightness info reflects the latest value.
|
// adjustments made so that the brightness info reflects the latest value.
|
||||||
saveBrightnessInfo(getScreenBrightnessSetting(), animateValue);
|
brightnessAdjusted = saveBrightnessInfo(getScreenBrightnessSetting(), animateValue);
|
||||||
} else {
|
} else {
|
||||||
saveBrightnessInfo(getScreenBrightnessSetting());
|
brightnessAdjusted = saveBrightnessInfo(getScreenBrightnessSetting());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (brightnessAdjusted) {
|
||||||
|
postBrightnessChangeRunnable();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Log any changes to what is currently driving the brightness setting.
|
// Log any changes to what is currently driving the brightness setting.
|
||||||
@@ -1534,31 +1541,50 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
|||||||
public BrightnessInfo getBrightnessInfo() {
|
public BrightnessInfo getBrightnessInfo() {
|
||||||
synchronized (mCachedBrightnessInfo) {
|
synchronized (mCachedBrightnessInfo) {
|
||||||
return new BrightnessInfo(
|
return new BrightnessInfo(
|
||||||
mCachedBrightnessInfo.brightness,
|
mCachedBrightnessInfo.brightness.value,
|
||||||
mCachedBrightnessInfo.adjustedBrightness,
|
mCachedBrightnessInfo.adjustedBrightness.value,
|
||||||
mCachedBrightnessInfo.brightnessMin,
|
mCachedBrightnessInfo.brightnessMin.value,
|
||||||
mCachedBrightnessInfo.brightnessMax,
|
mCachedBrightnessInfo.brightnessMax.value,
|
||||||
mCachedBrightnessInfo.hbmMode,
|
mCachedBrightnessInfo.hbmMode.value,
|
||||||
mCachedBrightnessInfo.highBrightnessTransitionPoint);
|
mCachedBrightnessInfo.hbmTransitionPoint.value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void saveBrightnessInfo(float brightness) {
|
private boolean saveBrightnessInfo(float brightness) {
|
||||||
saveBrightnessInfo(brightness, brightness);
|
return saveBrightnessInfo(brightness, brightness);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void saveBrightnessInfo(float brightness, float adjustedBrightness) {
|
private boolean saveBrightnessInfo(float brightness, float adjustedBrightness) {
|
||||||
synchronized (mCachedBrightnessInfo) {
|
synchronized (mCachedBrightnessInfo) {
|
||||||
mCachedBrightnessInfo.brightness = brightness;
|
boolean changed = false;
|
||||||
mCachedBrightnessInfo.adjustedBrightness = adjustedBrightness;
|
|
||||||
mCachedBrightnessInfo.brightnessMin = mHbmController.getCurrentBrightnessMin();
|
changed |=
|
||||||
mCachedBrightnessInfo.brightnessMax = mHbmController.getCurrentBrightnessMax();
|
mCachedBrightnessInfo.checkAndSetFloat(mCachedBrightnessInfo.brightness,
|
||||||
mCachedBrightnessInfo.hbmMode = mHbmController.getHighBrightnessMode();
|
brightness);
|
||||||
mCachedBrightnessInfo.highBrightnessTransitionPoint =
|
changed |=
|
||||||
mHbmController.getTransitionPoint();
|
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() {
|
private HighBrightnessModeController createHbmControllerLocked() {
|
||||||
final DisplayDevice device = mLogicalDisplay.getPrimaryDisplayDeviceLocked();
|
final DisplayDevice device = mLogicalDisplay.getPrimaryDisplayDeviceLocked();
|
||||||
final DisplayDeviceConfig ddConfig = device.getDisplayDeviceConfig();
|
final DisplayDeviceConfig ddConfig = device.getDisplayDeviceConfig();
|
||||||
@@ -1571,7 +1597,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
|||||||
PowerManager.BRIGHTNESS_MIN, PowerManager.BRIGHTNESS_MAX, hbmData,
|
PowerManager.BRIGHTNESS_MIN, PowerManager.BRIGHTNESS_MAX, hbmData,
|
||||||
() -> {
|
() -> {
|
||||||
sendUpdatePowerStateLocked();
|
sendUpdatePowerStateLocked();
|
||||||
mHandler.post(mOnBrightnessChangeRunnable);
|
postBrightnessChangeRunnable();
|
||||||
// TODO(b/192258832): Switch the HBMChangeCallback to a listener pattern.
|
// TODO(b/192258832): Switch the HBMChangeCallback to a listener pattern.
|
||||||
if (mAutomaticBrightnessController != null) {
|
if (mAutomaticBrightnessController != null) {
|
||||||
mAutomaticBrightnessController.update();
|
mAutomaticBrightnessController.update();
|
||||||
@@ -2073,7 +2099,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
|||||||
private void setCurrentScreenBrightness(float brightnessValue) {
|
private void setCurrentScreenBrightness(float brightnessValue) {
|
||||||
if (brightnessValue != mCurrentScreenBrightnessSetting) {
|
if (brightnessValue != mCurrentScreenBrightnessSetting) {
|
||||||
mCurrentScreenBrightnessSetting = brightnessValue;
|
mCurrentScreenBrightnessSetting = brightnessValue;
|
||||||
mHandler.post(mOnBrightnessChangeRunnable);
|
postBrightnessChangeRunnable();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2125,7 +2151,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void notifyBrightnessChanged(float brightness, boolean userInitiated,
|
private void notifyBrightnessTrackerChanged(float brightness, boolean userInitiated,
|
||||||
boolean hadUserDataPoint) {
|
boolean hadUserDataPoint) {
|
||||||
final float brightnessInNits = convertToNits(brightness);
|
final float brightnessInNits = convertToNits(brightness);
|
||||||
if (mPowerRequest.useAutoBrightness && brightnessInNits >= 0.0f
|
if (mPowerRequest.useAutoBrightness && brightnessInNits >= 0.0f
|
||||||
@@ -2236,16 +2262,17 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
|||||||
pw.println(" mColorFadeFadesConfig=" + mColorFadeFadesConfig);
|
pw.println(" mColorFadeFadesConfig=" + mColorFadeFadesConfig);
|
||||||
pw.println(" mColorFadeEnabled=" + mColorFadeEnabled);
|
pw.println(" mColorFadeEnabled=" + mColorFadeEnabled);
|
||||||
synchronized (mCachedBrightnessInfo) {
|
synchronized (mCachedBrightnessInfo) {
|
||||||
pw.println(" mCachedBrightnessInfo.brightness=" + mCachedBrightnessInfo.brightness);
|
pw.println(" mCachedBrightnessInfo.brightness=" +
|
||||||
|
mCachedBrightnessInfo.brightness.value);
|
||||||
pw.println(" mCachedBrightnessInfo.adjustedBrightness=" +
|
pw.println(" mCachedBrightnessInfo.adjustedBrightness=" +
|
||||||
mCachedBrightnessInfo.adjustedBrightness);
|
mCachedBrightnessInfo.adjustedBrightness.value);
|
||||||
pw.println(" mCachedBrightnessInfo.brightnessMin=" +
|
pw.println(" mCachedBrightnessInfo.brightnessMin=" +
|
||||||
mCachedBrightnessInfo.brightnessMin);
|
mCachedBrightnessInfo.brightnessMin.value);
|
||||||
pw.println(" mCachedBrightnessInfo.brightnessMax=" +
|
pw.println(" mCachedBrightnessInfo.brightnessMax=" +
|
||||||
mCachedBrightnessInfo.brightnessMax);
|
mCachedBrightnessInfo.brightnessMax.value);
|
||||||
pw.println(" mCachedBrightnessInfo.hbmMode=" + mCachedBrightnessInfo.hbmMode);
|
pw.println(" mCachedBrightnessInfo.hbmMode=" + mCachedBrightnessInfo.hbmMode.value);
|
||||||
pw.println(" mCachedBrightnessInfo.highBrightnessTransitionPoint=" +
|
pw.println(" mCachedBrightnessInfo.hbmTransitionPoint=" +
|
||||||
mCachedBrightnessInfo.highBrightnessTransitionPoint);
|
mCachedBrightnessInfo.hbmTransitionPoint.value);
|
||||||
}
|
}
|
||||||
pw.println(" mDisplayBlanksAfterDozeConfig=" + mDisplayBlanksAfterDozeConfig);
|
pw.println(" mDisplayBlanksAfterDozeConfig=" + mDisplayBlanksAfterDozeConfig);
|
||||||
pw.println(" mBrightnessBucketsInDozeConfig=" + mBrightnessBucketsInDozeConfig);
|
pw.println(" mBrightnessBucketsInDozeConfig=" + mBrightnessBucketsInDozeConfig);
|
||||||
@@ -2663,11 +2690,31 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
|||||||
}
|
}
|
||||||
|
|
||||||
static class CachedBrightnessInfo {
|
static class CachedBrightnessInfo {
|
||||||
public float brightness;
|
public MutableFloat brightness = new MutableFloat(PowerManager.BRIGHTNESS_INVALID_FLOAT);
|
||||||
public float adjustedBrightness;
|
public MutableFloat adjustedBrightness =
|
||||||
public float brightnessMin;
|
new MutableFloat(PowerManager.BRIGHTNESS_INVALID_FLOAT);
|
||||||
public float brightnessMax;
|
public MutableFloat brightnessMin =
|
||||||
public int hbmMode;
|
new MutableFloat(PowerManager.BRIGHTNESS_INVALID_FLOAT);
|
||||||
public float highBrightnessTransitionPoint;
|
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