Merge "Use top activity for fixed rotation from snapshot starting window" into tm-dev
This commit is contained in:
@@ -2462,8 +2462,16 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
|
||||
if (!newTask && taskSwitch && processRunning && !activityCreated && task.intent != null
|
||||
&& mActivityComponent.equals(task.intent.getComponent())) {
|
||||
final ActivityRecord topAttached = task.getActivity(ActivityRecord::attachedToProcess);
|
||||
if (topAttached != null && topAttached.isSnapshotCompatible(snapshot)) {
|
||||
return STARTING_WINDOW_TYPE_SNAPSHOT;
|
||||
if (topAttached != null) {
|
||||
if (topAttached.isSnapshotCompatible(snapshot)
|
||||
// This trampoline must be the same rotation.
|
||||
&& mDisplayContent.getDisplayRotation().rotationForOrientation(mOrientation,
|
||||
mDisplayContent.getRotation()) == snapshot.getRotation()) {
|
||||
return STARTING_WINDOW_TYPE_SNAPSHOT;
|
||||
}
|
||||
// No usable snapshot. And a splash screen may also be weird because an existing
|
||||
// activity may be shown right after the trampoline is finished.
|
||||
return STARTING_WINDOW_TYPE_NONE;
|
||||
}
|
||||
}
|
||||
final boolean isActivityHome = isActivityTypeHome();
|
||||
|
||||
@@ -158,14 +158,13 @@ public class StartingSurfaceController {
|
||||
+ topFullscreenActivity);
|
||||
return null;
|
||||
}
|
||||
if (topFullscreenActivity.getWindowConfiguration().getRotation()
|
||||
!= taskSnapshot.getRotation()) {
|
||||
if (activity.mDisplayContent.getRotation() != taskSnapshot.getRotation()) {
|
||||
// The snapshot should have been checked by ActivityRecord#isSnapshotCompatible
|
||||
// that the activity will be updated to the same rotation as the snapshot. Since
|
||||
// the transition is not started yet, fixed rotation transform needs to be applied
|
||||
// earlier to make the snapshot show in a rotated container.
|
||||
activity.mDisplayContent.handleTopActivityLaunchingInDifferentOrientation(
|
||||
topFullscreenActivity, false /* checkOpening */);
|
||||
activity, false /* checkOpening */);
|
||||
}
|
||||
mService.mAtmService.mTaskOrganizerController.addStartingWindow(task,
|
||||
activity, 0 /* launchTheme */, taskSnapshot);
|
||||
|
||||
Reference in New Issue
Block a user