diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index 7849e56f0d2e1..27e3afe6bcfad 100644 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -1028,6 +1028,9 @@ --> 0 + + false + 10 diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index b612084bee660..5a0828b27af83 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -1682,6 +1682,7 @@ + diff --git a/services/core/java/com/android/server/display/DisplayPowerController.java b/services/core/java/com/android/server/display/DisplayPowerController.java index c103312685573..0225ea3d59d49 100644 --- a/services/core/java/com/android/server/display/DisplayPowerController.java +++ b/services/core/java/com/android/server/display/DisplayPowerController.java @@ -237,6 +237,9 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call // Screen state we reported to policy. Must be one of REPORTED_TO_POLICY_SCREEN_* fields. private int mReportedScreenStateToPolicy; + // If the last recorded screen state was dozing or not. + private boolean mDozing; + // Remembers whether certain kinds of brightness adjustments // were recently applied so that we can decide how to transition. private boolean mAppliedAutoBrightness; @@ -247,6 +250,9 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call private final int mBrightnessRampRateFast; private final int mBrightnessRampRateSlow; + // Brightness animation ramp flags + private final boolean mSkipScreenOnBrightnessRamp; + // The controller for the automatic brightness level. private AutomaticBrightnessController mAutomaticBrightnessController; @@ -310,6 +316,8 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call com.android.internal.R.integer.config_brightness_ramp_rate_fast); mBrightnessRampRateSlow = resources.getInteger( com.android.internal.R.integer.config_brightness_ramp_rate_slow); + mSkipScreenOnBrightnessRamp = resources.getBoolean( + com.android.internal.R.bool.config_skipScreenOnBrightnessRamp); int lightSensorRate = resources.getInteger( com.android.internal.R.integer.config_autoBrightnessLightSensorRate); @@ -738,9 +746,11 @@ 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. + // Skip the animation when the screen is off, suspended, or if configs say otherwise. if (!mPendingScreenOff) { - if (state == Display.STATE_ON || state == Display.STATE_DOZE) { + boolean skipScreenRamp = mSkipScreenOnBrightnessRamp && mDozing + && state == Display.STATE_ON; + if (state == Display.STATE_ON && !skipScreenRamp || state == Display.STATE_DOZE) { animateScreenBrightness(brightness, slowChange ? mBrightnessRampRateSlow : mBrightnessRampRateFast); } else { @@ -798,6 +808,9 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call mUnfinishedBusiness = false; mCallbacks.releaseSuspendBlocker(); } + + // Record if dozing for future comparison. + mDozing = state != Display.STATE_ON; } @Override