Merge "Update orientation before executing transition by starting window" into tm-dev

This commit is contained in:
Riddle Hsu
2022-02-25 06:26:28 +00:00
committed by Android (Google) Code Review
3 changed files with 5 additions and 22 deletions

View File

@@ -6187,6 +6187,10 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
// The pending transition state will be cleared after the transition is started, so
// save the state for launching the client later (used by LaunchActivityItem).
mStartingData.mIsTransitionForward = true;
// Ensure that the transition can run with the latest orientation.
if (this != mDisplayContent.getLastOrientationSource()) {
mDisplayContent.updateOrientation();
}
mDisplayContent.executeAppTransition();
}
}

View File

@@ -1642,18 +1642,12 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
// It has been set and not yet finished.
return true;
}
if (!r.occludesParent()) {
if (!r.occludesParent() || r.isReportedDrawn()) {
// While entering or leaving a translucent or floating activity (e.g. dialog style),
// there is a visible activity in the background. Then it still needs rotation animation
// to cover the activity configuration change.
return false;
}
if (mTransitionController.isShellTransitionsEnabled()
? mTransitionController.wasVisibleAtStart(r) : r.isVisible()) {
// If activity is already visible, then it's not "launching". However, shell-transitions
// will make it visible immediately.
return false;
}
if (checkOpening) {
if (mTransitionController.isShellTransitionsEnabled()) {
if (!mTransitionController.isCollecting(r)) {

View File

@@ -282,21 +282,6 @@ class TransitionController {
return false;
}
/**
* Temporary work-around to deal with integration of legacy fixed-rotation. Returns whether
* the activity was visible before the collecting transition.
* TODO: at-least replace the polling mechanism.
*/
boolean wasVisibleAtStart(@NonNull ActivityRecord ar) {
if (mCollectingTransition == null) return ar.isVisible();
final Transition.ChangeInfo ci = mCollectingTransition.mChanges.get(ar);
if (ci == null) {
// not part of transition, so use current state.
return ar.isVisible();
}
return ci.mVisible;
}
@WindowConfiguration.WindowingMode
int getWindowingModeAtStart(@NonNull WindowContainer wc) {
if (mCollectingTransition == null) return wc.getWindowingMode();