Merge "Skip window exit animation if display has transition" into tm-dev
This commit is contained in:
@@ -2606,11 +2606,17 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
|
||||
return;
|
||||
}
|
||||
|
||||
// Remove immediately if there is display transition because the animation is
|
||||
// usually unnoticeable (e.g. covered by rotation animation) and the animation
|
||||
// bounds could be inconsistent, such as depending on when the window applies
|
||||
// its draw transaction with new rotation.
|
||||
final boolean allowExitAnimation = !getDisplayContent().inTransition();
|
||||
|
||||
if (wasVisible) {
|
||||
final int transit = (!startingWindow) ? TRANSIT_EXIT : TRANSIT_PREVIEW_DONE;
|
||||
|
||||
// Try starting an animation.
|
||||
if (mWinAnimator.applyAnimationLocked(transit, false)) {
|
||||
if (allowExitAnimation && mWinAnimator.applyAnimationLocked(transit, false)) {
|
||||
ProtoLog.v(WM_DEBUG_ANIM,
|
||||
"Set animatingExit: reason=remove/applyAnimation win=%s", this);
|
||||
mAnimatingExit = true;
|
||||
@@ -2624,7 +2630,8 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
|
||||
mWmService.mAccessibilityController.onWindowTransition(this, transit);
|
||||
}
|
||||
}
|
||||
final boolean isAnimating = mAnimatingExit || isExitAnimationRunningSelfOrParent();
|
||||
final boolean isAnimating = allowExitAnimation
|
||||
&& (mAnimatingExit || isExitAnimationRunningSelfOrParent());
|
||||
final boolean lastWindowIsStartingWindow = startingWindow && mActivityRecord != null
|
||||
&& mActivityRecord.isLastWindow(this);
|
||||
// We delay the removal of a window if it has a showing surface that can be used to run
|
||||
@@ -5284,12 +5291,6 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
|
||||
if (mControllableInsetProvider != null) {
|
||||
return;
|
||||
}
|
||||
if (getDisplayContent().inTransition()) {
|
||||
// Skip because the animation is usually unnoticeable (e.g. covered by rotation
|
||||
// animation) and the animation bounds could be inconsistent, such as depending
|
||||
// on when the window applies its draw transaction with new rotation.
|
||||
return;
|
||||
}
|
||||
|
||||
final DisplayInfo displayInfo = getDisplayInfo();
|
||||
anim.initialize(mWindowFrames.mFrame.width(), mWindowFrames.mFrame.height(),
|
||||
|
||||
Reference in New Issue
Block a user