Perform finish animation actions.

When stepAnimation returns false, do not return false immediately.
Instead carry out finish actions. Also, remove state machine that is no
longer necessary.

Fixes bug 6184070.

Change-Id: I530eb2b62b864bbce929f573d10b31b102152f1f
diff --git a/services/java/com/android/server/wm/AppWindowToken.java b/services/java/com/android/server/wm/AppWindowToken.java
index 5ca09e7..67b667a 100644
--- a/services/java/com/android/server/wm/AppWindowToken.java
+++ b/services/java/com/android/server/wm/AppWindowToken.java
@@ -240,8 +240,10 @@
                     animation.setStartTime(currentTime);
                     animating = true;
                 }
-                // we're done!
-                return stepAnimation(currentTime);
+                if (stepAnimation(currentTime)) {
+                    // we're done!
+                    return true;
+                }
             }
         } else if (animation != null) {
             // If the display is frozen, and there is a pending animation,
diff --git a/services/java/com/android/server/wm/WindowState.java b/services/java/com/android/server/wm/WindowState.java
index 42ce291..57d0374 100644
--- a/services/java/com/android/server/wm/WindowState.java
+++ b/services/java/com/android/server/wm/WindowState.java
@@ -305,11 +305,6 @@
     int mAnimDw;
     int mAnimDh;
 
-    static final int ANIM_STATE_IDLE = 0;
-    static final int ANIM_STATE_RUNNING = 1;
-    static final int ANIM_STATE_STOPPING = 2;
-    int mAnimState = ANIM_STATE_IDLE;
-
     WindowState(WindowManagerService service, Session s, IWindow c, WindowToken token,
            WindowState attachedWindow, int seq, WindowManager.LayoutParams a,
            int viewVisibility) {
@@ -653,7 +648,6 @@
             mLocalAnimating = false;
             mAnimation.cancel();
             mAnimation = null;
-            mAnimState = ANIM_STATE_IDLE;
         }
     }
 
@@ -665,7 +659,6 @@
             mAnimation.cancel();
             mAnimation = null;
             destroySurfaceLocked();
-            mAnimState = ANIM_STATE_IDLE;
         }
         mExiting = false;
     }
@@ -971,7 +964,8 @@
                 mAppToken.firstWindowDrawn = true;
 
                 if (mAppToken.startingData != null) {
-                    if (WindowManagerService.DEBUG_STARTING_WINDOW || WindowManagerService.DEBUG_ANIM) Slog.v(WindowManagerService.TAG,
+                    if (WindowManagerService.DEBUG_STARTING_WINDOW ||
+                            WindowManagerService.DEBUG_ANIM) Slog.v(WindowManagerService.TAG,
                             "Finish starting " + mToken
                             + ": first real window is shown, no animation");
                     // If this initial window is animating, stop it -- we
@@ -983,7 +977,6 @@
                         mAnimation = null;
                         // Make sure we clean up the animation.
                         mAnimating = true;
-                        mAnimState = ANIM_STATE_IDLE;
                     }
                     mService.mFinishedStarting.add(mAppToken);
                     mService.mH.sendEmptyMessage(H.FINISHED_STARTING);
@@ -995,7 +988,7 @@
     }
 
     private boolean stepAnimation(long currentTime) {
-        if ((mAnimation == null) || !mLocalAnimating || (mAnimState != ANIM_STATE_RUNNING)) {
+        if ((mAnimation == null) || !mLocalAnimating) {
             return false;
         }
         mTransformation.clear();
@@ -1003,9 +996,6 @@
         if (WindowManagerService.DEBUG_ANIM) Slog.v(
             WindowManagerService.TAG, "Stepped animation in " + this +
             ": more=" + more + ", xform=" + mTransformation);
-        if (!more) {
-            mAnimState = ANIM_STATE_STOPPING;
-        }
         return more;
     }
 
@@ -1032,11 +1022,11 @@
                     mAnimation.setStartTime(currentTime);
                     mLocalAnimating = true;
                     mAnimating = true;
-                    mAnimState = ANIM_STATE_RUNNING;
                 }
-                if ((mAnimation != null) && mLocalAnimating && 
-                        (mAnimState != ANIM_STATE_STOPPING)) {
-                    return stepAnimation(currentTime);
+                if ((mAnimation != null) && mLocalAnimating) {
+                    if (stepAnimation(currentTime)) {
+                        return true;
+                    }
                 }
                 if (WindowManagerService.DEBUG_ANIM) Slog.v(
                     WindowManagerService.TAG, "Finished animation in " + this +
@@ -1137,7 +1127,6 @@
             mAppToken.updateReportedVisibilityLocked();
         }
 
-        mAnimState = ANIM_STATE_IDLE;
         return false;
     }