Merge "Fix flicker when transiting activities without animation." into oc-dr1-dev

This commit is contained in:
Rob Carr
2017-07-20 18:23:25 +00:00
committed by Android (Google) Code Review

View File

@@ -431,11 +431,18 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree
mEnteringAnimation = true; mEnteringAnimation = true;
mService.mActivityManagerAppTransitionNotifier.onAppTransitionFinishedLocked(token); mService.mActivityManagerAppTransitionNotifier.onAppTransitionFinishedLocked(token);
} }
// If we are hidden but there is no delay needed we immediately // If we are hidden but there is no delay needed we immediately
// apply the Surface transaction so that the ActivityManager // apply the Surface transaction so that the ActivityManager
// can have some guarantee on the Surface state // can have some guarantee on the Surface state following
// following setting the visibility. // setting the visibility. This captures cases like dismissing
if (hidden && !delayed) { // the docked or pinned stack where there is no app transition.
//
// In the case of a "Null" animation, there will be
// no animation but there will still be a transition set.
// We still need to delay hiding the surface such that it
// can be synchronized with showing the next surface in the transition.
if (hidden && !delayed && !mService.mAppTransition.isTransitionSet()) {
SurfaceControl.openTransaction(); SurfaceControl.openTransaction();
for (int i = mChildren.size() - 1; i >= 0; i--) { for (int i = mChildren.size() - 1; i >= 0; i--) {
mChildren.get(i).mWinAnimator.hide("immediately hidden"); mChildren.get(i).mWinAnimator.hide("immediately hidden");