diff --git a/services/core/java/com/android/server/wm/AppWindowAnimator.java b/services/core/java/com/android/server/wm/AppWindowAnimator.java index 5c1d5b255d88f..fbefd59dcefe2 100644 --- a/services/core/java/com/android/server/wm/AppWindowAnimator.java +++ b/services/core/java/com/android/server/wm/AppWindowAnimator.java @@ -100,9 +100,6 @@ public class AppWindowAnimator { private int mTransit; private int mTransitFlags; - /** WindowStateAnimator from mAppAnimator.allAppWindows as of last performLayout */ - ArrayList mAllAppWinAnimators = new ArrayList<>(); - /** True if the current animation was transferred from another AppWindowAnimator. * See {@link #transferCurrentAnimation}*/ boolean usingTransferredAnimation = false; @@ -239,8 +236,6 @@ public class AppWindowAnimator { toAppAnimator.mTransit = mTransit; } if (transferWinAnimator != null) { - mAllAppWinAnimators.remove(transferWinAnimator); - toAppAnimator.mAllAppWinAnimators.add(transferWinAnimator); toAppAnimator.hasTransformation = transferWinAnimator.mAppAnimator.hasTransformation; if (toAppAnimator.hasTransformation) { toAppAnimator.transformation.set(transferWinAnimator.mAppAnimator.transformation); @@ -417,25 +412,17 @@ public class AppWindowAnimator { transformation.clear(); - final int numAllAppWinAnimators = mAllAppWinAnimators.size(); - for (int i = 0; i < numAllAppWinAnimators; i++) { - mAllAppWinAnimators.get(i).mWin.onExitAnimationDone(); - } + mAppToken.forAllWindows(WindowState::onExitAnimationDone, false /* traverseTopToBottom */); mService.mAppTransition.notifyAppTransitionFinishedLocked(mAppToken.token); return false; } // This must be called while inside a transaction. - boolean showAllWindowsLocked() { - boolean isAnimating = false; - final int NW = mAllAppWinAnimators.size(); - for (int i=0; i { + if (DEBUG_VISIBILITY) Slog.v(TAG, "performing show on: " + windowState); + windowState.performShowLocked(); + }, false /* traverseTopToBottom */); } void dump(PrintWriter pw, String prefix) { @@ -466,11 +453,6 @@ public class AppWindowAnimator { pw.print(prefix); pw.print("thumbnailTransformation="); pw.println(thumbnailTransformation.toShortString()); } - for (int i=0; i allAppWinAnimators = mAppAnimator.mAllAppWinAnimators; - allAppWinAnimators.clear(); - - final int windowsCount = mChildren.size(); - for (int j = 0; j < windowsCount; j++) { - (mChildren.get(j)).addWinAnimatorToList(allAppWinAnimators); - } - } - @Override void onAppTransitionDone() { sendingToBottom = false; @@ -1230,7 +1220,7 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree // We can now show all of the drawn windows! if (!mService.mOpeningApps.contains(this)) { - mService.mAnimator.orAnimating(mAppAnimator.showAllWindowsLocked()); + mAppAnimator.showAllWindowsLocked(); } } } diff --git a/services/core/java/com/android/server/wm/WindowSurfacePlacer.java b/services/core/java/com/android/server/wm/WindowSurfacePlacer.java index d8e7457d95ef1..782e6090e8504 100644 --- a/services/core/java/com/android/server/wm/WindowSurfacePlacer.java +++ b/services/core/java/com/android/server/wm/WindowSurfacePlacer.java @@ -421,13 +421,12 @@ class WindowSurfacePlacer { } wtoken.updateReportedVisibilityLocked(); wtoken.waitingToShow = false; - wtoken.setAllAppWinAnimators(); if (SHOW_LIGHT_TRANSACTIONS) Slog.i(TAG, ">>> OPEN TRANSACTION handleAppTransitionReadyLocked()"); mService.openSurfaceTransaction(); try { - mService.mAnimator.orAnimating(appAnimator.showAllWindowsLocked()); + appAnimator.showAllWindowsLocked(); } finally { mService.closeSurfaceTransaction("handleAppTransitionReadyLocked"); if (SHOW_LIGHT_TRANSACTIONS) Slog.i(TAG, @@ -462,12 +461,8 @@ class WindowSurfacePlacer { appAnimator.setNullAnimation(); // TODO: Do we need to add to mNoAnimationNotifyOnTransitionFinished like above if not // animating? - wtoken.setAllAppWinAnimators(); wtoken.setVisibility(animLp, false, transit, false, voiceInteraction); wtoken.updateReportedVisibilityLocked(); - // setAllAppWinAnimators so the windows get onExitAnimationDone once the animation is - // done. - wtoken.setAllAppWinAnimators(); // Force the allDrawn flag, because we want to start // this guy's animations regardless of whether it's // gotten drawn. @@ -673,9 +668,8 @@ class WindowSurfacePlacer { appAnimator.setNullAnimation(); mService.updateTokenInPlaceLocked(wtoken, transit); wtoken.updateReportedVisibilityLocked(); - wtoken.setAllAppWinAnimators(); mService.mAnimator.mAppWindowAnimating |= appAnimator.isAnimating(); - mService.mAnimator.orAnimating(appAnimator.showAllWindowsLocked()); + appAnimator.showAllWindowsLocked(); } } }