summaryrefslogtreecommitdiffstats
path: root/services/core/java/com/android/server/display
diff options
context:
space:
mode:
authorJorim Jaggi <jjaggi@google.com>2015-07-10 14:24:44 -0700
committerJorim Jaggi <jjaggi@google.com>2015-07-28 23:02:54 +0000
commit0d210f6395072db4a4c53d4cb8fac4a59a3965b4 (patch)
tree7b63f0a48ec2b0fa8b25604efb17ccade833b568 /services/core/java/com/android/server/display
parent751a96a040ada09199ca3356d9a515ec090d1237 (diff)
downloadframeworks_base-0d210f6395072db4a4c53d4cb8fac4a59a3965b4.zip
frameworks_base-0d210f6395072db4a4c53d4cb8fac4a59a3965b4.tar.gz
frameworks_base-0d210f6395072db4a4c53d4cb8fac4a59a3965b4.tar.bz2
Animation for touch, wake and unlock
- Add callback to inform SysUI when the screen has been unblocked and turned on. - Cleanup inconsistent messaging about device interactive/screen on and off. - Add callbacks to inform SysUI about screen states - Implement a quick fade for the scrim after touch, wake, and unlock. First, start with a black scrim on top of everything, and then fade it out. - Make sure we play the normal unlock animation when device is pulsing - Override navigation bar animations for touch, wake and unlock: Fade in the same manner as the scrim. Bug: 22571198 Bug: 21855614 Change-Id: I8ff08d72cced1e0f03c78d71ff710d8a4f6b848c
Diffstat (limited to 'services/core/java/com/android/server/display')
-rw-r--r--services/core/java/com/android/server/display/DisplayPowerController.java39
1 files changed, 32 insertions, 7 deletions
diff --git a/services/core/java/com/android/server/display/DisplayPowerController.java b/services/core/java/com/android/server/display/DisplayPowerController.java
index 8d2687b..452378f 100644
--- a/services/core/java/com/android/server/display/DisplayPowerController.java
+++ b/services/core/java/com/android/server/display/DisplayPowerController.java
@@ -106,6 +106,10 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
private static final int BRIGHTNESS_RAMP_RATE_FAST = 200;
private static final int BRIGHTNESS_RAMP_RATE_SLOW = 40;
+ private static final int REPORTED_TO_POLICY_SCREEN_OFF = 0;
+ private static final int REPORTED_TO_POLICY_SCREEN_TURNING_ON = 1;
+ private static final int REPORTED_TO_POLICY_SCREEN_ON = 2;
+
private final Object mLock = new Object();
private final Context mContext;
@@ -231,8 +235,8 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
// The elapsed real time when the screen on was blocked.
private long mScreenOnBlockStartRealTime;
- // True if we told the window manager policy that the screen was off.
- private boolean mReportedScreenOffToPolicy;
+ // Screen state we reported to policy. Must be one of REPORTED_TO_POLICY_SCREEN_* fields.
+ private int mReportedScreenStateToPolicy;
// Remembers whether certain kinds of brightness adjustments
// were recently applied so that we can decide how to transition.
@@ -699,6 +703,13 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
final boolean finished = ready
&& !mScreenBrightnessRampAnimator.isAnimating();
+ // Notify policy about screen turned on.
+ if (ready && state != Display.STATE_OFF
+ && mReportedScreenStateToPolicy == REPORTED_TO_POLICY_SCREEN_TURNING_ON) {
+ mReportedScreenStateToPolicy = REPORTED_TO_POLICY_SCREEN_ON;
+ mWindowManagerPolicy.screenTurnedOn();
+ }
+
// Grab a wake lock if we have unfinished business.
if (!finished && !mUnfinishedBusiness) {
if (DEBUG) {
@@ -776,12 +787,13 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
// it is only removed once the window manager tells us that the activity has
// finished drawing underneath.
final boolean isOff = (state == Display.STATE_OFF);
- if (isOff && !mReportedScreenOffToPolicy && !mScreenOffBecauseOfProximity) {
- mReportedScreenOffToPolicy = true;
+ if (isOff && mReportedScreenStateToPolicy != REPORTED_TO_POLICY_SCREEN_OFF
+ && !mScreenOffBecauseOfProximity) {
+ mReportedScreenStateToPolicy = REPORTED_TO_POLICY_SCREEN_OFF;
unblockScreenOn();
mWindowManagerPolicy.screenTurnedOff();
- } else if (!isOff && mReportedScreenOffToPolicy) {
- mReportedScreenOffToPolicy = false;
+ } else if (!isOff && mReportedScreenStateToPolicy == REPORTED_TO_POLICY_SCREEN_OFF) {
+ mReportedScreenStateToPolicy = REPORTED_TO_POLICY_SCREEN_TURNING_ON;
if (mPowerState.getColorFadeLevel() == 0.0f) {
blockScreenOn();
} else {
@@ -1095,7 +1107,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
pw.println(" mAppliedLowPower=" + mAppliedLowPower);
pw.println(" mPendingScreenOnUnblocker=" + mPendingScreenOnUnblocker);
pw.println(" mPendingScreenOff=" + mPendingScreenOff);
- pw.println(" mReportedScreenOffToPolicy=" + mReportedScreenOffToPolicy);
+ pw.println(" mReportedToPolicy=" + reportedToPolicyToString(mReportedScreenStateToPolicy));
pw.println(" mScreenBrightnessRampAnimator.isAnimating()=" +
mScreenBrightnessRampAnimator.isAnimating());
@@ -1132,6 +1144,19 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
}
}
+ private static String reportedToPolicyToString(int state) {
+ switch (state) {
+ case REPORTED_TO_POLICY_SCREEN_OFF:
+ return "REPORTED_TO_POLICY_SCREEN_OFF";
+ case REPORTED_TO_POLICY_SCREEN_TURNING_ON:
+ return "REPORTED_TO_POLICY_SCREEN_TURNING_ON";
+ case REPORTED_TO_POLICY_SCREEN_ON:
+ return "REPORTED_TO_POLICY_SCREEN_ON";
+ default:
+ return Integer.toString(state);
+ }
+ }
+
private static Spline createAutoBrightnessSpline(int[] lux, int[] brightness) {
try {
final int n = brightness.length;