Merge "Use exact brightnesses values for comparison." into sc-dev

This commit is contained in:
TreeHugger Robot
2021-07-09 20:33:27 +00:00
committed by Android (Google) Code Review
5 changed files with 29 additions and 39 deletions

View File

@@ -705,10 +705,8 @@ public final class DisplayManagerService extends SystemService {
final BrightnessPair brightnessPair = final BrightnessPair brightnessPair =
index < 0 ? null : mDisplayBrightnesses.valueAt(index); index < 0 ? null : mDisplayBrightnesses.valueAt(index);
if (index < 0 || (mDisplayStates.valueAt(index) == state if (index < 0 || (mDisplayStates.valueAt(index) == state
&& BrightnessSynchronizer.floatEquals( && brightnessPair.brightness == brightnessState
brightnessPair.brightness, brightnessState) && brightnessPair.sdrBrightness == sdrBrightnessState)) {
&& BrightnessSynchronizer.floatEquals(
brightnessPair.sdrBrightness, sdrBrightnessState))) {
return; // Display no longer exists or no change. return; // Display no longer exists or no change.
} }

View File

@@ -1352,9 +1352,8 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
final float currentBrightness = mPowerState.getScreenBrightness(); final float currentBrightness = mPowerState.getScreenBrightness();
final float currentSdrBrightness = mPowerState.getSdrScreenBrightness(); final float currentSdrBrightness = mPowerState.getSdrScreenBrightness();
if (isValidBrightnessValue(animateValue) if (isValidBrightnessValue(animateValue)
&& (!BrightnessSynchronizer.floatEquals(animateValue, currentBrightness) && (animateValue != currentBrightness
|| !BrightnessSynchronizer.floatEquals( || sdrAnimateValue != currentSdrBrightness)) {
sdrAnimateValue, currentSdrBrightness))) {
if (initialRampSkip || hasBrightnessBuckets if (initialRampSkip || hasBrightnessBuckets
|| wasOrWillBeInVr || !isDisplayContentVisible || brightnessIsTemporary) { || wasOrWillBeInVr || !isDisplayContentVisible || brightnessIsTemporary) {
animateScreenBrightness(animateValue, sdrAnimateValue, animateScreenBrightness(animateValue, sdrAnimateValue,
@@ -1684,11 +1683,10 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
mHbmController.getCurrentBrightnessMin(), mHbmController.getCurrentBrightnessMax()); mHbmController.getCurrentBrightnessMin(), mHbmController.getCurrentBrightnessMax());
} }
// Checks whether the brightness is within the valid brightness range, not including the off or // Checks whether the brightness is within the valid brightness range, not including off.
// invalid states. private boolean isValidBrightnessValue(float brightness) {
private boolean isValidBrightnessValue(float brightnessState) { return brightness >= PowerManager.BRIGHTNESS_MIN
return brightnessState >= PowerManager.BRIGHTNESS_MIN && brightness <= PowerManager.BRIGHTNESS_MAX;
&& brightnessState <= PowerManager.BRIGHTNESS_MAX;
} }
private void animateScreenBrightness(float target, float sdrTarget, float rate) { private void animateScreenBrightness(float target, float sdrTarget, float rate) {
@@ -2018,6 +2016,9 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
} }
private void putScreenBrightnessSetting(float brightnessValue, boolean updateCurrent) { private void putScreenBrightnessSetting(float brightnessValue, boolean updateCurrent) {
if (!isValidBrightnessValue(brightnessValue)) {
return;
}
if (updateCurrent) { if (updateCurrent) {
setCurrentScreenBrightness(brightnessValue); setCurrentScreenBrightness(brightnessValue);
} }
@@ -2064,8 +2065,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|| mPendingScreenBrightnessSetting < 0.0f)) { || mPendingScreenBrightnessSetting < 0.0f)) {
return brightnessSplineChanged; return brightnessSplineChanged;
} }
if (BrightnessSynchronizer.floatEquals( if (mCurrentScreenBrightnessSetting == mPendingScreenBrightnessSetting) {
mCurrentScreenBrightnessSetting, mPendingScreenBrightnessSetting)) {
mPendingScreenBrightnessSetting = PowerManager.BRIGHTNESS_INVALID_FLOAT; mPendingScreenBrightnessSetting = PowerManager.BRIGHTNESS_INVALID_FLOAT;
mTemporaryScreenBrightness = PowerManager.BRIGHTNESS_INVALID_FLOAT; mTemporaryScreenBrightness = PowerManager.BRIGHTNESS_INVALID_FLOAT;
return brightnessSplineChanged; return brightnessSplineChanged;

View File

@@ -26,8 +26,6 @@ import android.util.Slog;
import android.view.Choreographer; import android.view.Choreographer;
import android.view.Display; import android.view.Display;
import com.android.internal.display.BrightnessSynchronizer;
import java.io.PrintWriter; import java.io.PrintWriter;
/** /**
@@ -166,10 +164,11 @@ final class DisplayPowerState {
/** /**
* Sets the display's SDR brightness. * Sets the display's SDR brightness.
* *
* @param brightness The brightness, ranges from 0.0f (minimum / off) to 1.0f (brightest). * @param brightness The brightness, ranges from 0.0f (minimum) to 1.0f (brightest), or is -1f
* (off).
*/ */
public void setSdrScreenBrightness(float brightness) { public void setSdrScreenBrightness(float brightness) {
if (!BrightnessSynchronizer.floatEquals(mSdrScreenBrightness, brightness)) { if (mSdrScreenBrightness != brightness) {
if (DEBUG) { if (DEBUG) {
Slog.d(TAG, "setSdrScreenBrightness: brightness=" + brightness); Slog.d(TAG, "setSdrScreenBrightness: brightness=" + brightness);
} }
@@ -192,10 +191,11 @@ final class DisplayPowerState {
/** /**
* Sets the display brightness. * Sets the display brightness.
* *
* @param brightness The brightness, ranges from 0.0f (minimum / off) to 1.0f (brightest). * @param brightness The brightness, ranges from 0.0f (minimum) to 1.0f (brightest), or is -1f
* (off).
*/ */
public void setScreenBrightness(float brightness) { public void setScreenBrightness(float brightness) {
if (!BrightnessSynchronizer.floatEquals(mScreenBrightness, brightness)) { if (mScreenBrightness != brightness) {
if (DEBUG) { if (DEBUG) {
Slog.d(TAG, "setScreenBrightness: brightness=" + brightness); Slog.d(TAG, "setScreenBrightness: brightness=" + brightness);
} }
@@ -432,10 +432,8 @@ final class DisplayPowerState {
public boolean setState(int state, float brightnessState, float sdrBrightnessState) { public boolean setState(int state, float brightnessState, float sdrBrightnessState) {
synchronized (mLock) { synchronized (mLock) {
boolean stateChanged = state != mPendingState; boolean stateChanged = state != mPendingState;
boolean backlightChanged = boolean backlightChanged = brightnessState != mPendingBacklight
!BrightnessSynchronizer.floatEquals(brightnessState, mPendingBacklight) || sdrBrightnessState != mPendingSdrBacklight;
|| !BrightnessSynchronizer.floatEquals(
sdrBrightnessState, mPendingSdrBacklight);
if (stateChanged || backlightChanged) { if (stateChanged || backlightChanged) {
if (DEBUG) { if (DEBUG) {
Slog.d(TAG, "Requesting new screen state: state=" Slog.d(TAG, "Requesting new screen state: state="
@@ -486,10 +484,8 @@ final class DisplayPowerState {
stateChanged = (state != mActualState); stateChanged = (state != mActualState);
brightnessState = mPendingBacklight; brightnessState = mPendingBacklight;
sdrBrightnessState = mPendingSdrBacklight; sdrBrightnessState = mPendingSdrBacklight;
backlightChanged = backlightChanged = brightnessState != mActualBacklight
!BrightnessSynchronizer.floatEquals(brightnessState, mActualBacklight) || sdrBrightnessState != mActualSdrBacklight;
|| !BrightnessSynchronizer.floatEquals(
sdrBrightnessState, mActualSdrBacklight);
if (!stateChanged) { if (!stateChanged) {
// State changed applied, notify outer class. // State changed applied, notify outer class.
postScreenUpdateThreadSafe(); postScreenUpdateThreadSafe();

View File

@@ -648,12 +648,11 @@ final class LocalDisplayAdapter extends DisplayAdapter {
public Runnable requestDisplayStateLocked(final int state, final float brightnessState, public Runnable requestDisplayStateLocked(final int state, final float brightnessState,
final float sdrBrightnessState) { final float sdrBrightnessState) {
// Assume that the brightness is off if the display is being turned off. // Assume that the brightness is off if the display is being turned off.
assert state != Display.STATE_OFF || BrightnessSynchronizer.floatEquals( assert state != Display.STATE_OFF
brightnessState, PowerManager.BRIGHTNESS_OFF_FLOAT); || brightnessState == PowerManager.BRIGHTNESS_OFF_FLOAT;
final boolean stateChanged = (mState != state); final boolean stateChanged = (mState != state);
final boolean brightnessChanged = final boolean brightnessChanged = mBrightnessState != brightnessState
!(BrightnessSynchronizer.floatEquals(mBrightnessState, brightnessState) || mSdrBrightnessState != sdrBrightnessState;
&& BrightnessSynchronizer.floatEquals(mSdrBrightnessState, sdrBrightnessState));
if (stateChanged || brightnessChanged) { if (stateChanged || brightnessChanged) {
final long physicalDisplayId = mPhysicalDisplayId; final long physicalDisplayId = mPhysicalDisplayId;
final IBinder token = getDisplayTokenLocked(); final IBinder token = getDisplayTokenLocked();
@@ -807,8 +806,7 @@ final class LocalDisplayAdapter extends DisplayAdapter {
} }
private float brightnessToBacklight(float brightness) { private float brightnessToBacklight(float brightness) {
if (BrightnessSynchronizer.floatEquals( if (brightness == PowerManager.BRIGHTNESS_OFF_FLOAT) {
brightness, PowerManager.BRIGHTNESS_OFF_FLOAT)) {
return PowerManager.BRIGHTNESS_OFF_FLOAT; return PowerManager.BRIGHTNESS_OFF_FLOAT;
} else { } else {
return getDisplayDeviceConfig().getBacklightFromBrightness(brightness); return getDisplayDeviceConfig().getBacklightFromBrightness(brightness);

View File

@@ -20,8 +20,6 @@ import android.animation.ValueAnimator;
import android.util.FloatProperty; import android.util.FloatProperty;
import android.view.Choreographer; import android.view.Choreographer;
import com.android.internal.display.BrightnessSynchronizer;
/** /**
* A custom animator that progressively updates a property value at * A custom animator that progressively updates a property value at
* a given variable rate until it reaches a particular target value. * a given variable rate until it reaches a particular target value.
@@ -157,10 +155,10 @@ class RampAnimator<T> {
} }
final float oldCurrentValue = mCurrentValue; final float oldCurrentValue = mCurrentValue;
mCurrentValue = mAnimatedValue; mCurrentValue = mAnimatedValue;
if (!BrightnessSynchronizer.floatEquals(oldCurrentValue, mCurrentValue)) { if (oldCurrentValue != mCurrentValue) {
mProperty.setValue(mObject, mCurrentValue); mProperty.setValue(mObject, mCurrentValue);
} }
if (!BrightnessSynchronizer.floatEquals(mTargetValue, mCurrentValue)) { if (mTargetValue != mCurrentValue) {
postAnimationCallback(); postAnimationCallback();
} else { } else {
mAnimating = false; mAnimating = false;