am ab45a217: Make wake-and-unlock faster
* commit 'ab45a217b0002dcf586d529ab8581cacbbfc37e9': Make wake-and-unlock faster
This commit is contained in:
@@ -19,4 +19,5 @@
|
||||
android:fromAlpha="0.0"
|
||||
android:toAlpha="1.0"
|
||||
android:interpolator="@android:interpolator/linear_out_slow_in"
|
||||
android:startDelay="32"
|
||||
android:duration="200"/>
|
||||
|
||||
@@ -3441,7 +3441,8 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
|
||||
.alpha(0f)
|
||||
.setStartDelay(0)
|
||||
.setDuration(FADE_KEYGUARD_DURATION_PULSING)
|
||||
.setInterpolator(ScrimController.KEYGUARD_FADE_OUT_INTERPOLATOR);
|
||||
.setInterpolator(ScrimController.KEYGUARD_FADE_OUT_INTERPOLATOR)
|
||||
.start();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -22,7 +22,6 @@ import android.animation.PropertyValuesHolder;
|
||||
import android.animation.ValueAnimator;
|
||||
import android.content.Context;
|
||||
import android.graphics.Color;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
import android.view.ViewTreeObserver;
|
||||
import android.view.animation.DecelerateInterpolator;
|
||||
@@ -87,6 +86,7 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener,
|
||||
private float mTopHeadsUpDragAmount;
|
||||
private View mDraggedHeadsUpView;
|
||||
private boolean mForceHideScrims;
|
||||
private boolean mSkipFirstFrame;
|
||||
|
||||
public ScrimController(ScrimView scrimBehind, ScrimView scrimInFront, View headsUpScrim,
|
||||
boolean scrimSrcEnabled) {
|
||||
@@ -134,14 +134,20 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener,
|
||||
scheduleUpdate();
|
||||
}
|
||||
|
||||
public void animateKeyguardFadingOut(long delay, long duration, Runnable onAnimationFinished) {
|
||||
public void animateKeyguardFadingOut(long delay, long duration, Runnable onAnimationFinished,
|
||||
boolean skipFirstFrame) {
|
||||
mWakeAndUnlocking = false;
|
||||
mAnimateKeyguardFadingOut = true;
|
||||
mDurationOverride = duration;
|
||||
mAnimationDelay = delay;
|
||||
mAnimateChange = true;
|
||||
mSkipFirstFrame = skipFirstFrame;
|
||||
mOnAnimationFinished = onAnimationFinished;
|
||||
scheduleUpdate();
|
||||
|
||||
// No need to wait for the next frame to be drawn for this case - onPreDraw will execute
|
||||
// the changes we just scheduled.
|
||||
onPreDraw();
|
||||
}
|
||||
|
||||
public void abortKeyguardFadingOut() {
|
||||
@@ -339,6 +345,9 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener,
|
||||
}
|
||||
});
|
||||
anim.start();
|
||||
if (mSkipFirstFrame) {
|
||||
anim.setCurrentPlayTime(16);
|
||||
}
|
||||
scrim.setTag(TAG_KEY_ANIM, anim);
|
||||
scrim.setTag(TAG_KEY_ANIM_TARGET, target);
|
||||
}
|
||||
@@ -354,6 +363,7 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener,
|
||||
updateScrims();
|
||||
mDurationOverride = -1;
|
||||
mAnimationDelay = 0;
|
||||
mSkipFirstFrame = false;
|
||||
|
||||
// Make sure that we always call the listener even if we didn't start an animation.
|
||||
endAnimateKeyguardFadingOut(false /* force */);
|
||||
|
||||
@@ -74,7 +74,6 @@ public class StatusBarKeyguardViewManager {
|
||||
private boolean mLastOccluded;
|
||||
private boolean mLastBouncerShowing;
|
||||
private boolean mLastBouncerDismissible;
|
||||
private boolean mLastDeferScrimFadeOut;
|
||||
private OnDismissAction mAfterKeyguardGoneAction;
|
||||
private boolean mDeviceWillWakeUp;
|
||||
private boolean mDeferScrimFadeOut;
|
||||
@@ -184,7 +183,8 @@ public class StatusBarKeyguardViewManager {
|
||||
mScreenTurnedOn = true;
|
||||
if (mDeferScrimFadeOut) {
|
||||
mDeferScrimFadeOut = false;
|
||||
animateScrimControllerKeyguardFadingOut(0, WAKE_AND_UNLOCK_SCRIM_FADEOUT_DURATION_MS);
|
||||
animateScrimControllerKeyguardFadingOut(0, WAKE_AND_UNLOCK_SCRIM_FADEOUT_DURATION_MS,
|
||||
true /* skipFirstFrame */);
|
||||
updateStates();
|
||||
}
|
||||
mPhoneStatusBar.onScreenTurnedOn();
|
||||
@@ -264,7 +264,8 @@ public class StatusBarKeyguardViewManager {
|
||||
updateStates();
|
||||
mScrimController.animateKeyguardFadingOut(
|
||||
PhoneStatusBar.FADE_KEYGUARD_START_DELAY,
|
||||
PhoneStatusBar.FADE_KEYGUARD_DURATION, null);
|
||||
PhoneStatusBar.FADE_KEYGUARD_DURATION, null,
|
||||
false /* skipFirstFrame */);
|
||||
}
|
||||
}, new Runnable() {
|
||||
@Override
|
||||
@@ -287,7 +288,7 @@ public class StatusBarKeyguardViewManager {
|
||||
public void run() {
|
||||
mPhoneStatusBar.hideKeyguard();
|
||||
}
|
||||
});
|
||||
}, false /* skipFirstFrame */);
|
||||
} else {
|
||||
mFingerprintUnlockController.startKeyguardFadingAway();
|
||||
mPhoneStatusBar.setKeyguardFadingAway(startTime, delay, fadeoutDuration);
|
||||
@@ -302,10 +303,12 @@ public class StatusBarKeyguardViewManager {
|
||||
|
||||
// Screen is already on, don't defer with fading out.
|
||||
animateScrimControllerKeyguardFadingOut(0,
|
||||
WAKE_AND_UNLOCK_SCRIM_FADEOUT_DURATION_MS);
|
||||
WAKE_AND_UNLOCK_SCRIM_FADEOUT_DURATION_MS,
|
||||
true /* skipFirstFrame */);
|
||||
}
|
||||
} else {
|
||||
animateScrimControllerKeyguardFadingOut(delay, fadeoutDuration);
|
||||
animateScrimControllerKeyguardFadingOut(delay, fadeoutDuration,
|
||||
false /* skipFirstFrame */);
|
||||
}
|
||||
} else {
|
||||
mScrimController.animateGoingToFullShade(delay, fadeoutDuration);
|
||||
@@ -320,12 +323,14 @@ public class StatusBarKeyguardViewManager {
|
||||
}
|
||||
}
|
||||
|
||||
private void animateScrimControllerKeyguardFadingOut(long delay, long duration) {
|
||||
animateScrimControllerKeyguardFadingOut(delay, duration, null /* endRunnable */);
|
||||
private void animateScrimControllerKeyguardFadingOut(long delay, long duration,
|
||||
boolean skipFirstFrame) {
|
||||
animateScrimControllerKeyguardFadingOut(delay, duration, null /* endRunnable */,
|
||||
skipFirstFrame);
|
||||
}
|
||||
|
||||
private void animateScrimControllerKeyguardFadingOut(long delay, long duration,
|
||||
final Runnable endRunnable) {
|
||||
final Runnable endRunnable, boolean skipFirstFrame) {
|
||||
Trace.asyncTraceBegin(Trace.TRACE_TAG_VIEW, "Fading out", 0);
|
||||
mScrimController.animateKeyguardFadingOut(delay, duration, new Runnable() {
|
||||
@Override
|
||||
@@ -340,7 +345,7 @@ public class StatusBarKeyguardViewManager {
|
||||
ComponentCallbacks2.TRIM_MEMORY_UI_HIDDEN);
|
||||
Trace.asyncTraceEnd(Trace.TRACE_TAG_VIEW, "Fading out", 0);
|
||||
}
|
||||
});
|
||||
}, skipFirstFrame);
|
||||
}
|
||||
|
||||
private void executeAfterKeyguardGoneAction() {
|
||||
@@ -414,7 +419,6 @@ public class StatusBarKeyguardViewManager {
|
||||
boolean occluded = mOccluded;
|
||||
boolean bouncerShowing = mBouncer.isShowing();
|
||||
boolean bouncerDismissible = !mBouncer.isFullscreenBouncer();
|
||||
boolean deferScrimFadeOut = mDeferScrimFadeOut;
|
||||
|
||||
if ((bouncerDismissible || !showing) != (mLastBouncerDismissible || !mLastShowing)
|
||||
|| mFirstUpdate) {
|
||||
@@ -425,11 +429,8 @@ public class StatusBarKeyguardViewManager {
|
||||
}
|
||||
}
|
||||
|
||||
// Hide navigation bar on Keyguard but not on bouncer and also if we are deferring a scrim
|
||||
// fade out, i.e. we are waiting for the screen to have turned on.
|
||||
boolean navBarVisible = !deferScrimFadeOut && (!(showing && !occluded) || bouncerShowing);
|
||||
boolean lastNavBarVisible = !mLastDeferScrimFadeOut && (!(mLastShowing && !mLastOccluded)
|
||||
|| mLastBouncerShowing);
|
||||
boolean navBarVisible = (!(showing && !occluded) || bouncerShowing);
|
||||
boolean lastNavBarVisible = (!(mLastShowing && !mLastOccluded) || mLastBouncerShowing);
|
||||
if (navBarVisible != lastNavBarVisible || mFirstUpdate) {
|
||||
if (mPhoneStatusBar.getNavigationBarView() != null) {
|
||||
if (navBarVisible) {
|
||||
@@ -464,7 +465,6 @@ public class StatusBarKeyguardViewManager {
|
||||
mFirstUpdate = false;
|
||||
mLastShowing = showing;
|
||||
mLastOccluded = occluded;
|
||||
mLastDeferScrimFadeOut = deferScrimFadeOut;
|
||||
mLastBouncerShowing = bouncerShowing;
|
||||
mLastBouncerDismissible = bouncerDismissible;
|
||||
|
||||
|
||||
@@ -11953,12 +11953,18 @@ public class WindowManagerService extends IWindowManager.Stub
|
||||
final WindowList windows = getDefaultWindowListLocked();
|
||||
for (int winNdx = windows.size() - 1; winNdx >= 0; --winNdx) {
|
||||
final WindowState win = windows.get(winNdx);
|
||||
final boolean isForceHiding = mPolicy.isForceHiding(win.mAttrs);
|
||||
if (win.isVisibleLw()
|
||||
&& (win.mAppToken != null || mPolicy.isForceHiding(win.mAttrs))) {
|
||||
&& (win.mAppToken != null || isForceHiding)) {
|
||||
win.mWinAnimator.mDrawState = WindowStateAnimator.DRAW_PENDING;
|
||||
// Force add to mResizingWindows.
|
||||
win.mLastContentInsets.set(-1, -1, -1, -1);
|
||||
mWaitingForDrawn.add(win);
|
||||
|
||||
// No need to wait for the windows below Keyguard.
|
||||
if (isForceHiding) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
requestTraversalLocked();
|
||||
|
||||
Reference in New Issue
Block a user