Copy exiting app token list while stepping animation.

Stepping the animation can lead to WindowStateAnimator#finishExit,
which can lead to WindowManagerService#removeWindowInnerLocked, which
can immediately call WindowSurfacePlacer.performSurfacePlacement. From
here we will directly modify mExitingAppTokens for each stack and remove
tokens where exiting is complete. I think removeWindowInnerLocked making
a direct call to performSurfacePlacement is questionable...but changing
semantics there is very risky. For now, simply avoid processing tokens
in the animator if the surface placer has removed them. It seems all we
would want to do is trigger a layout pass, which has just occured anyway.

Bug: 30813094
Change-Id: Iaff77d227e09839f7e6edda6b8f188d164e6da74
1 file changed