Do not post a change in brightness if temporary

While the user is dragging the slider, temporary brightness is set. In
this case, we should not post to the listener or it may trigger unwanted
animations.

Test: manual, drag slider and hold
Fixes: 232891167
Change-Id: I723fc74cf0c305247563cc6f2afb2b74d671f83d
This commit is contained in:
Fabian Kozynski
2022-07-22 14:29:58 -04:00
parent 928a1ea2e8
commit 29defc3d68

View File

@@ -1500,6 +1500,8 @@ 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;
final boolean brightnessIsTemporary =
mAppliedTemporaryBrightness || mAppliedTemporaryAutoBrightnessAdjustment;
if (!mPendingScreenOff) {
if (mSkipScreenOnBrightnessRamp) {
if (state == Display.STATE_ON) {
@@ -1532,8 +1534,6 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
// level without it being a noticeable jump since any actual content isn't yet visible.
final boolean isDisplayContentVisible =
mColorFadeEnabled && mPowerState.getColorFadeLevel() == 1.0f;
final boolean brightnessIsTemporary =
mAppliedTemporaryBrightness || mAppliedTemporaryAutoBrightnessAdjustment;
// We only want to animate the brightness if it is between 0.0f and 1.0f.
// brightnessState can contain the values -1.0f and NaN, which we do not want to
// animate to. To avoid this, we check the value first.
@@ -1605,7 +1605,8 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
brightnessAdjusted = saveBrightnessInfo(getScreenBrightnessSetting());
}
if (brightnessAdjusted) {
// Only notify if the brightness adjustment is not temporary (i.e. slider has been released)
if (brightnessAdjusted && !brightnessIsTemporary) {
postBrightnessChangeRunnable();
}