From 7cc7b08a40c1eb5b231cafc8c663312a7f8f19e1 Mon Sep 17 00:00:00 2001 From: Jorim Jaggi Date: Tue, 10 Nov 2015 16:06:54 +0100 Subject: [PATCH] Make sure callback is only called once Because we set it already in the future, it was called already when we fetched the contents of the future, because it looked like we overrided the callback. Instead, don't do callbacks when calling the future, and save the callback in a separate field. Bug: 25568693 Change-Id: I8b7fd4248a2336470f8b7e12b64b0577dee96f6f --- .../java/com/android/server/wm/AppTransition.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/services/core/java/com/android/server/wm/AppTransition.java b/services/core/java/com/android/server/wm/AppTransition.java index 25ef8e6df656e..4852f02f8d250 100644 --- a/services/core/java/com/android/server/wm/AppTransition.java +++ b/services/core/java/com/android/server/wm/AppTransition.java @@ -164,6 +164,7 @@ public class AppTransition implements Dump { // Used for thumbnail transitions. True if we're scaling up, false if scaling down private boolean mNextAppTransitionScaleUp; private IRemoteCallback mNextAppTransitionCallback; + private IRemoteCallback mNextAppTransitionFutureCallback; private IRemoteCallback mAnimationFinishedCallback; private int mNextAppTransitionEnter; private int mNextAppTransitionExit; @@ -1448,10 +1449,7 @@ public class AppTransition implements Dump { mNextAppTransitionAnimationsSpecs.clear(); mNextAppTransitionAnimationsSpecsFuture = specsFuture; mNextAppTransitionScaleUp = scaleUp; - postAnimationCallback(); - mNextAppTransitionCallback = callback; - } else { - postAnimationCallback(); + mNextAppTransitionFutureCallback = callback; } } @@ -1486,8 +1484,10 @@ public class AppTransition implements Dump { } synchronized (mServiceLock) { mNextAppTransitionAnimationsSpecsPending = false; - overridePendingAppTransitionMultiThumb(specs, mNextAppTransitionCallback, - null /* finishedCallback */, mNextAppTransitionScaleUp); + overridePendingAppTransitionMultiThumb(specs, + mNextAppTransitionFutureCallback, null /* finishedCallback */, + mNextAppTransitionScaleUp); + mNextAppTransitionFutureCallback = null; mWindowSurfacePlacer.requestTraversal(); } }