Removed cancelRecentsAnimationSynchronously() call path (48/n)
No longer needed since we are now under a unified lock.
Bug: 80414790
Test: Existing test pass
Change-Id: I5aad974053d85330653b99ebc410f8cbda076348
diff --git a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
index 88b330b..1853209 100644
--- a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
+++ b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
@@ -2797,7 +2797,7 @@
try {
synchronized (mGlobalLock) {
// Cancel the recents animation synchronously (do not hold the WM lock)
- mWindowManager.cancelRecentsAnimationSynchronously(restoreHomeStackPosition
+ mWindowManager.cancelRecentsAnimation(restoreHomeStackPosition
? REORDER_MOVE_TO_ORIGINAL_POSITION
: REORDER_KEEP_IN_PLACE, "cancelRecentsAnimation/uid=" + callingUid);
}
diff --git a/services/core/java/com/android/server/wm/RecentsAnimation.java b/services/core/java/com/android/server/wm/RecentsAnimation.java
index 4f0332c..caa8363 100644
--- a/services/core/java/com/android/server/wm/RecentsAnimation.java
+++ b/services/core/java/com/android/server/wm/RecentsAnimation.java
@@ -241,7 +241,7 @@
// Fetch all the surface controls and pass them to the client to get the animation
// started. Cancel any existing recents animation running synchronously (do not hold the
// WM lock)
- mWindowManager.cancelRecentsAnimationSynchronously(REORDER_MOVE_TO_ORIGINAL_POSITION,
+ mWindowManager.cancelRecentsAnimation(REORDER_MOVE_TO_ORIGINAL_POSITION,
"startRecentsActivity");
mWindowManager.initializeRecentsAnimation(mTargetActivityType, recentsAnimationRunner,
this, mDefaultDisplay.mDisplayId,
@@ -396,12 +396,8 @@
@Override
public void onAnimationFinished(@RecentsAnimationController.ReorderMode int reorderMode,
- boolean runSychronously, boolean sendUserLeaveHint) {
- if (runSychronously) {
- finishAnimation(reorderMode, sendUserLeaveHint);
- } else {
- mService.mH.post(() -> finishAnimation(reorderMode, sendUserLeaveHint));
- }
+ boolean sendUserLeaveHint) {
+ finishAnimation(reorderMode, sendUserLeaveHint);
}
@Override
@@ -435,8 +431,7 @@
} else {
// Just cancel directly to unleash from launcher when the next launching task is the
// current top task.
- mWindowManager.cancelRecentsAnimationSynchronously(REORDER_KEEP_IN_PLACE,
- "stackOrderChanged");
+ mWindowManager.cancelRecentsAnimation(REORDER_KEEP_IN_PLACE, "stackOrderChanged");
}
}
diff --git a/services/core/java/com/android/server/wm/RecentsAnimationController.java b/services/core/java/com/android/server/wm/RecentsAnimationController.java
index 724a72e..8752f37 100644
--- a/services/core/java/com/android/server/wm/RecentsAnimationController.java
+++ b/services/core/java/com/android/server/wm/RecentsAnimationController.java
@@ -168,8 +168,7 @@
public interface RecentsAnimationCallbacks {
/** Callback when recents animation is finished. */
- void onAnimationFinished(@ReorderMode int reorderMode, boolean runSychronously,
- boolean sendUserLeaveHint);
+ void onAnimationFinished(@ReorderMode int reorderMode, boolean sendUserLeaveHint);
}
private final IRecentsAnimationController mController =
@@ -221,8 +220,7 @@
// prior to calling the callback
mCallbacks.onAnimationFinished(moveHomeToTop
? REORDER_MOVE_TO_TOP
- : REORDER_MOVE_TO_ORIGINAL_POSITION,
- true /* runSynchronously */, sendUserLeaveHint);
+ : REORDER_MOVE_TO_ORIGINAL_POSITION, sendUserLeaveHint);
mDisplayContent.mBoundsAnimationController.setAnimationType(FADE_IN);
} finally {
Binder.restoreCallingIdentity(token);
@@ -498,21 +496,15 @@
}
void cancelAnimation(@ReorderMode int reorderMode, String reason) {
- cancelAnimation(reorderMode, false /* runSynchronously */, false /*screenshot */, reason);
- }
-
- void cancelAnimationSynchronously(@ReorderMode int reorderMode, String reason) {
- cancelAnimation(reorderMode, true /* runSynchronously */, false /* screenshot */, reason);
+ cancelAnimation(reorderMode, false /*screenshot */, reason);
}
void cancelAnimationWithScreenshot(boolean screenshot) {
- cancelAnimation(REORDER_KEEP_IN_PLACE, true /* sync */, screenshot, "stackOrderChanged");
+ cancelAnimation(REORDER_KEEP_IN_PLACE, screenshot, "stackOrderChanged");
}
- private void cancelAnimation(@ReorderMode int reorderMode, boolean runSynchronously,
- boolean screenshot, String reason) {
- if (DEBUG_RECENTS_ANIMATIONS) Slog.d(TAG, "cancelAnimation(): reason=" + reason
- + " runSynchronously=" + runSynchronously);
+ private void cancelAnimation(@ReorderMode int reorderMode, boolean screenshot, String reason) {
+ if (DEBUG_RECENTS_ANIMATIONS) Slog.d(TAG, "cancelAnimation(): reason=" + reason);
synchronized (mService.getWindowManagerLock()) {
if (mCanceled) {
// We've already canceled the animation
@@ -525,16 +517,14 @@
// Screen shot previous task when next task starts transition and notify the runner.
// We will actually finish the animation once the runner calls cleanUpScreenshot().
final Task task = mPendingAnimations.get(0).mTask;
- final TaskSnapshot taskSnapshot = screenshotRecentTask(task, reorderMode,
- runSynchronously);
+ final TaskSnapshot taskSnapshot = screenshotRecentTask(task, reorderMode);
try {
mRunner.onAnimationCanceled(taskSnapshot);
} catch (RemoteException e) {
Slog.e(TAG, "Failed to cancel recents animation", e);
}
if (taskSnapshot == null) {
- mCallbacks.onAnimationFinished(reorderMode, runSynchronously,
- false /* sendUserLeaveHint */);
+ mCallbacks.onAnimationFinished(reorderMode, false /* sendUserLeaveHint */);
}
} else {
// Otherwise, notify the runner and clean up the animation immediately
@@ -545,8 +535,7 @@
} catch (RemoteException e) {
Slog.e(TAG, "Failed to cancel recents animation", e);
}
- mCallbacks.onAnimationFinished(reorderMode, runSynchronously,
- false /* sendUserLeaveHint */);
+ mCallbacks.onAnimationFinished(reorderMode, false /* sendUserLeaveHint */);
}
}
}
@@ -592,8 +581,7 @@
return mRequestDeferCancelUntilNextTransition && mCancelDeferredWithScreenshot;
}
- TaskSnapshot screenshotRecentTask(Task task, @ReorderMode int reorderMode,
- boolean runSynchronously) {
+ TaskSnapshot screenshotRecentTask(Task task, @ReorderMode int reorderMode) {
final TaskSnapshotController snapshotController = mService.mTaskSnapshotController;
final ArraySet<Task> tasks = Sets.newArraySet(task);
snapshotController.snapshotTasks(tasks);
@@ -613,8 +601,7 @@
if (DEBUG_RECENTS_ANIMATIONS) {
Slog.d(TAG, "mRecentScreenshotAnimator finish");
}
- mCallbacks.onAnimationFinished(reorderMode, runSynchronously,
- false /* sendUserLeaveHint */);
+ mCallbacks.onAnimationFinished(reorderMode, false /* sendUserLeaveHint */);
}, mService);
mRecentScreenshotAnimator.transferAnimation(task.mSurfaceAnimator);
return taskSnapshot;
diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java
index db77a33..ebb13226 100644
--- a/services/core/java/com/android/server/wm/WindowManagerService.java
+++ b/services/core/java/com/android/server/wm/WindowManagerService.java
@@ -2607,50 +2607,39 @@
* @return Whether the next recents animation can continue to start. Called from
* {@link RecentsAnimation#startRecentsActivity}.
*/
- public boolean canStartRecentsAnimation() {
- synchronized (mGlobalLock) {
- // TODO(multi-display): currently only default display support recent activity
- if (getDefaultDisplayContentLocked().mAppTransition.isTransitionSet()) {
- return false;
- }
- return true;
+ boolean canStartRecentsAnimation() {
+ // TODO(multi-display): currently only default display support recent activity
+ if (getDefaultDisplayContentLocked().mAppTransition.isTransitionSet()) {
+ return false;
}
+ return true;
}
- /**
- * Cancels any running recents animation. The caller should NOT hold the WM lock while calling
- * this method, as it will call back into AM and may cause a deadlock. Any locking will be done
- * in the animation controller itself.
- */
- public void cancelRecentsAnimationSynchronously(
+ void cancelRecentsAnimation(
@RecentsAnimationController.ReorderMode int reorderMode, String reason) {
if (mRecentsAnimationController != null) {
// This call will call through to cleanupAnimation() below after the animation is
// canceled
- mRecentsAnimationController.cancelAnimationSynchronously(reorderMode, reason);
+ mRecentsAnimationController.cancelAnimation(reorderMode, reason);
}
}
- public void cleanupRecentsAnimation(@RecentsAnimationController.ReorderMode int reorderMode) {
- synchronized (mGlobalLock) {
- if (mRecentsAnimationController != null) {
- final RecentsAnimationController controller = mRecentsAnimationController;
- mRecentsAnimationController = null;
- controller.cleanupAnimation(reorderMode);
- // TODO(mult-display): currently only default display support recents animation.
- getDefaultDisplayContentLocked().mAppTransition.updateBooster();
- }
+ void cleanupRecentsAnimation(@RecentsAnimationController.ReorderMode int reorderMode) {
+ if (mRecentsAnimationController != null) {
+ final RecentsAnimationController controller = mRecentsAnimationController;
+ mRecentsAnimationController = null;
+ controller.cleanupAnimation(reorderMode);
+ // TODO(mult-display): currently only default display support recents animation.
+ getDefaultDisplayContentLocked().mAppTransition.updateBooster();
}
}
- public void setAppFullscreen(IBinder token, boolean toOpaque) {
- synchronized (mGlobalLock) {
- final AppWindowToken atoken = mRoot.getAppWindowToken(token);
- if (atoken != null) {
- atoken.setFillsParent(toOpaque);
- setWindowOpaqueLocked(token, toOpaque);
- mWindowPlacerLocked.requestTraversal();
- }
+ void setAppFullscreen(IBinder token, boolean toOpaque) {
+ final AppWindowToken atoken = mRoot.getAppWindowToken(token);
+ if (atoken != null) {
+ atoken.setFillsParent(toOpaque);
+ setWindowOpaqueLocked(token, toOpaque);
+ mWindowPlacerLocked.requestTraversal();
}
}