Merge "Update orientation before executing transition by starting window" into tm-dev
This commit is contained in:
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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)) {
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user