Merge "Fix no recents animations after unify"

This commit is contained in:
Louis Chang
2019-10-03 01:36:19 +00:00
committed by Android (Google) Code Review

View File

@@ -974,6 +974,7 @@ public class WindowManagerService extends IWindowManager.Stub
Trace.traceEnd(TRACE_TAG_WINDOW_MANAGER);
}
}
/** Listener to notify activity manager about app transitions. */
final WindowManagerInternal.AppTransitionListener mActivityManagerAppTransitionNotifier
= new WindowManagerInternal.AppTransitionListener() {
@@ -990,7 +991,13 @@ public class WindowManagerService extends IWindowManager.Stub
if (atoken == null) {
return;
}
if (atoken.mLaunchTaskBehind) {
// While running a recents animation, this will get called early because we show the
// recents animation target activity immediately when the animation starts. Defer the
// mLaunchTaskBehind updates until recents animation finishes.
final boolean isRecentsAnimationTarget = getRecentsAnimationController() != null
&& getRecentsAnimationController().isTargetApp(atoken);
if (atoken.mLaunchTaskBehind && !isRecentsAnimationTarget) {
try {
mActivityTaskManager.notifyLaunchTaskBehindComplete(atoken.token);
} catch (RemoteException e) {
@@ -998,20 +1005,13 @@ public class WindowManagerService extends IWindowManager.Stub
atoken.mLaunchTaskBehind = false;
} else {
atoken.updateReportedVisibilityLocked();
if (atoken.mEnteringAnimation) {
if (getRecentsAnimationController() != null
&& getRecentsAnimationController().isTargetApp(atoken)) {
// Currently running a recents animation, this will get called early because
// we show the recents animation target activity immediately when the
// animation starts. In this case, we should defer sending the finished
// callback until the animation successfully finishes
return;
} else {
atoken.mEnteringAnimation = false;
try {
mActivityTaskManager.notifyEnterAnimationComplete(atoken.token);
} catch (RemoteException e) {
}
// We should also defer sending the finished callback until the recents animation
// successfully finishes.
if (atoken.mEnteringAnimation && !isRecentsAnimationTarget) {
atoken.mEnteringAnimation = false;
try {
mActivityTaskManager.notifyEnterAnimationComplete(atoken.token);
} catch (RemoteException e) {
}
}
}