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;
|
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) {
|
if (wasVisible) {
|
||||||
final int transit = (!startingWindow) ? TRANSIT_EXIT : TRANSIT_PREVIEW_DONE;
|
final int transit = (!startingWindow) ? TRANSIT_EXIT : TRANSIT_PREVIEW_DONE;
|
||||||
|
|
||||||
// Try starting an animation.
|
// Try starting an animation.
|
||||||
if (mWinAnimator.applyAnimationLocked(transit, false)) {
|
if (allowExitAnimation && mWinAnimator.applyAnimationLocked(transit, false)) {
|
||||||
ProtoLog.v(WM_DEBUG_ANIM,
|
ProtoLog.v(WM_DEBUG_ANIM,
|
||||||
"Set animatingExit: reason=remove/applyAnimation win=%s", this);
|
"Set animatingExit: reason=remove/applyAnimation win=%s", this);
|
||||||
mAnimatingExit = true;
|
mAnimatingExit = true;
|
||||||
@@ -2624,7 +2630,8 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
|
|||||||
mWmService.mAccessibilityController.onWindowTransition(this, transit);
|
mWmService.mAccessibilityController.onWindowTransition(this, transit);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
final boolean isAnimating = mAnimatingExit || isExitAnimationRunningSelfOrParent();
|
final boolean isAnimating = allowExitAnimation
|
||||||
|
&& (mAnimatingExit || isExitAnimationRunningSelfOrParent());
|
||||||
final boolean lastWindowIsStartingWindow = startingWindow && mActivityRecord != null
|
final boolean lastWindowIsStartingWindow = startingWindow && mActivityRecord != null
|
||||||
&& mActivityRecord.isLastWindow(this);
|
&& mActivityRecord.isLastWindow(this);
|
||||||
// We delay the removal of a window if it has a showing surface that can be used to run
|
// 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) {
|
if (mControllableInsetProvider != null) {
|
||||||
return;
|
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();
|
final DisplayInfo displayInfo = getDisplayInfo();
|
||||||
anim.initialize(mWindowFrames.mFrame.width(), mWindowFrames.mFrame.height(),
|
anim.initialize(mWindowFrames.mFrame.width(), mWindowFrames.mFrame.height(),
|
||||||
|
|||||||
Reference in New Issue
Block a user