Merge "Request starting window first when moving task with shell transition" into tm-qpr-dev

This commit is contained in:
Riddle Hsu
2022-06-20 09:42:48 +00:00
committed by Android (Google) Code Review
2 changed files with 15 additions and 12 deletions

View File

@@ -2179,14 +2179,6 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
: null; : null;
mTaskSupervisor.findTaskToMoveToFront(task, flags, realOptions, "moveTaskToFront", mTaskSupervisor.findTaskToMoveToFront(task, flags, realOptions, "moveTaskToFront",
false /* forceNonResizable */); false /* forceNonResizable */);
final ActivityRecord topActivity = task.getTopNonFinishingActivity();
if (topActivity != null) {
// We are reshowing a task, use a starting window to hide the initial draw delay
// so the transition can start earlier.
topActivity.showStartingWindow(true /* taskSwitch */);
}
} finally { } finally {
Binder.restoreCallingIdentity(origId); Binder.restoreCallingIdentity(origId);
} }

View File

@@ -1434,10 +1434,10 @@ public class ActivityTaskSupervisor implements RecentTasks.Callbacks {
mUserLeaving = true; mUserLeaving = true;
} }
task.mTransitionController.requestTransitionIfNeeded(TRANSIT_TO_FRONT, final Transition newTransition = task.mTransitionController.isShellTransitionsEnabled()
0 /* flags */, task, task /* readyGroupRef */, ? task.mTransitionController.isCollecting() ? null
options != null ? options.getRemoteTransition() : null, : task.mTransitionController.createTransition(TRANSIT_TO_FRONT) : null;
null /* displayChange */); task.mTransitionController.collect(task);
reason = reason + " findTaskToMoveToFront"; reason = reason + " findTaskToMoveToFront";
boolean reparented = false; boolean reparented = false;
if (task.isResizeable() && canUseActivityOptionsLaunchBounds(options)) { if (task.isResizeable() && canUseActivityOptionsLaunchBounds(options)) {
@@ -1480,6 +1480,17 @@ public class ActivityTaskSupervisor implements RecentTasks.Callbacks {
handleNonResizableTaskIfNeeded(task, WINDOWING_MODE_UNDEFINED, handleNonResizableTaskIfNeeded(task, WINDOWING_MODE_UNDEFINED,
mRootWindowContainer.getDefaultTaskDisplayArea(), currentRootTask, mRootWindowContainer.getDefaultTaskDisplayArea(), currentRootTask,
forceNonResizeable); forceNonResizeable);
if (r != null) {
// Use a starting window to reduce the transition latency for reshowing the task.
// Note that with shell transition, this should be executed before requesting
// transition to avoid delaying the starting window.
r.showStartingWindow(true /* taskSwitch */);
}
if (newTransition != null) {
task.mTransitionController.requestStartTransition(newTransition, task,
options != null ? options.getRemoteTransition() : null,
null /* displayChange */);
}
} finally { } finally {
mUserLeaving = false; mUserLeaving = false;
} }