diff options
| author | 2021-10-05 08:17:04 +0000 | |
|---|---|---|
| committer | 2021-10-05 08:17:04 +0000 | |
| commit | 9b9cca942ee9a986040e487cc0098cc923ca6291 (patch) | |
| tree | b71dfe987087ead82dae14a579c0cbc368cc1961 | |
| parent | 69c8b1aef68a2f0bade155130c11eedbf996db8f (diff) | |
| parent | 5da73506b3e48f3af00dc92702267451f78f2e44 (diff) | |
Merge "Add TransitionController to member of WindowContainer" into sc-v2-dev
19 files changed, 80 insertions, 84 deletions
diff --git a/services/core/java/com/android/server/wm/ActivityClientController.java b/services/core/java/com/android/server/wm/ActivityClientController.java index cc0db1d12e7b..ee72fc8622a5 100644 --- a/services/core/java/com/android/server/wm/ActivityClientController.java +++ b/services/core/java/com/android/server/wm/ActivityClientController.java @@ -1072,7 +1072,7 @@ class ActivityClientController extends IActivityClientController.Stub { r.mDisplayContent.mAppTransition.overridePendingAppTransition( packageName, enterAnim, exitAnim, null, null, r.mOverrideTaskTransition); - mService.getTransitionController().setOverrideAnimation( + r.mTransitionController.setOverrideAnimation( TransitionInfo.AnimationOptions.makeCustomAnimOptions(packageName, enterAnim, exitAnim, r.mOverrideTaskTransition), null /* startCallback */, null /* finishCallback */); diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java index c1fcf71b38d2..3b1da1d0053d 100644 --- a/services/core/java/com/android/server/wm/ActivityRecord.java +++ b/services/core/java/com/android/server/wm/ActivityRecord.java @@ -1531,7 +1531,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A } // TODO(b/169035022): move to a more-appropriate place. - mAtmService.getTransitionController().collect(this); + mTransitionController.collect(this); if (prevDc.mOpeningApps.remove(this)) { // Transfer opening transition to new display. mDisplayContent.mOpeningApps.add(this); @@ -3096,9 +3096,9 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A mAtmService.deferWindowLayout(); try { - final Transition newTransition = (!mAtmService.getTransitionController().isCollecting() - && mAtmService.getTransitionController().getTransitionPlayer() != null) - ? mAtmService.getTransitionController().createTransition(TRANSIT_CLOSE) : null; + final Transition newTransition = (!mTransitionController.isCollecting() + && mTransitionController.getTransitionPlayer() != null) + ? mTransitionController.createTransition(TRANSIT_CLOSE) : null; mTaskSupervisor.mNoHistoryActivities.remove(this); makeFinishingLocked(); // Make a local reference to its task since this.task could be set to null once this @@ -3131,7 +3131,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A final boolean endTask = task.getTopNonFinishingActivity() == null && !task.isClearingToReuseTask(); if (newTransition != null) { - mAtmService.getTransitionController().requestStartTransition(newTransition, + mTransitionController.requestStartTransition(newTransition, endTask ? task : null, null /* remote */); } if (isState(RESUMED)) { @@ -3559,12 +3559,12 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A if (stopped) { abortAndClearOptionsAnimation(); } - if (mAtmService.getTransitionController().isCollecting()) { + if (mTransitionController.isCollecting()) { // We don't want the finishing to change the transition ready state since there will not // be corresponding setReady for finishing. - mAtmService.getTransitionController().collectExistenceChange(this); + mTransitionController.collectExistenceChange(this); } else { - mAtmService.getTransitionController().requestTransitionIfNeeded(TRANSIT_CLOSE, this); + mTransitionController.requestTransitionIfNeeded(TRANSIT_CLOSE, this); } } @@ -3816,7 +3816,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A } else if (getDisplayContent().mAppTransition.isTransitionSet()) { getDisplayContent().mClosingApps.add(this); delayed = true; - } else if (mAtmService.getTransitionController().inTransition()) { + } else if (mTransitionController.inTransition()) { delayed = true; } @@ -3828,7 +3828,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A } // TODO(b/169035022): move to a more-appropriate place. - mAtmService.getTransitionController().collect(this); + mTransitionController.collect(this); ProtoLog.v(WM_DEBUG_APP_TRANSITIONS, "Removing app %s delayed=%b animation=%s animating=%b", this, delayed, @@ -4029,7 +4029,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A ProtoLog.v(WM_DEBUG_ADD_REMOVE, "Removing starting %s from %s", tStartingWindow, fromActivity); - mAtmService.getTransitionController().collect(tStartingWindow); + mTransitionController.collect(tStartingWindow); tStartingWindow.reparent(this, POSITION_TOP); // Propagate other interesting state between the tokens. If the old token is displayed, @@ -4055,7 +4055,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A // the token we transfer the animation over. Thus, set this flag to indicate // we've transferred the animation. mUseTransferredAnimation = true; - } else if (mAtmService.getTransitionController().getTransitionPlayer() != null) { + } else if (mTransitionController.getTransitionPlayer() != null) { // In the new transit system, just set this every time we transfer the window mUseTransferredAnimation = true; } @@ -4552,8 +4552,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A } if (options != null) { - mAtmService.getTransitionController().setOverrideAnimation(options, - startCallback, finishCallback); + mTransitionController.setOverrideAnimation(options, startCallback, finishCallback); } } @@ -4784,7 +4783,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A Debug.getCallers(6)); // Before setting mVisibleRequested so we can track changes. - mAtmService.getTransitionController().collect(this); + mTransitionController.collect(this); onChildVisibilityRequested(visible); @@ -4856,7 +4855,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A } // If in a transition, defer commits for activities that are going invisible - if (!visible && mAtmService.getTransitionController().inTransition(this)) { + if (!visible && inTransition()) { return; } // If we are preparing an app transition, then delay changing @@ -4983,8 +4982,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A * this has become invisible. */ private void postApplyAnimation(boolean visible) { - final boolean usingShellTransitions = - mAtmService.getTransitionController().getTransitionPlayer() != null; + final boolean usingShellTransitions = mTransitionController.isShellTransitionsEnabled(); final boolean delayed = isAnimating(TRANSITION | PARENTS | CHILDREN, ANIMATION_TYPE_APP_TRANSITION | ANIMATION_TYPE_WINDOW_ANIMATION | ANIMATION_TYPE_RECENTS); @@ -5434,7 +5432,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A // returns. Just need to confirm this reasoning makes sense. final boolean deferHidingClient = canEnterPictureInPicture && !isState(STARTED, STOPPING, STOPPED, PAUSED); - if (!mAtmService.getTransitionController().isShellTransitionsEnabled() + if (!mTransitionController.isShellTransitionsEnabled() && deferHidingClient && pictureInPictureArgs.isAutoEnterEnabled()) { // Go ahead and just put the activity in pip if it supports auto-pip. mAtmService.enterPictureInPictureMode(this, pictureInPictureArgs); @@ -5956,7 +5954,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A } void startFreezingScreen(int overrideOriginalDisplayRotation) { - if (mAtmService.getTransitionController().isShellTransitionsEnabled()) { + if (mTransitionController.isShellTransitionsEnabled()) { return; } ProtoLog.i(WM_DEBUG_ORIENTATION, @@ -7602,7 +7600,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A } boolean isInTransition() { - return mAtmService.getTransitionController().inTransition() // Shell transitions. + return mTransitionController.inTransition() // Shell transitions. || isAnimating(PARENTS | TRANSITION); // Legacy transitions. } diff --git a/services/core/java/com/android/server/wm/ActivityStarter.java b/services/core/java/com/android/server/wm/ActivityStarter.java index 980ebf0646e8..170789569b3f 100644 --- a/services/core/java/com/android/server/wm/ActivityStarter.java +++ b/services/core/java/com/android/server/wm/ActivityStarter.java @@ -1564,14 +1564,15 @@ class ActivityStarter { // startActivityInner. Otherwise, logic in startActivityInner could start a different // transition based on a sub-action. // Only do the create here (and defer requestStart) since startActivityInner might abort. - final Transition newTransition = (!mService.getTransitionController().isCollecting() - && mService.getTransitionController().getTransitionPlayer() != null) - ? mService.getTransitionController().createTransition(TRANSIT_OPEN) : null; + final TransitionController transitionController = r.mTransitionController; + final Transition newTransition = (!transitionController.isCollecting() + && transitionController.getTransitionPlayer() != null) + ? transitionController.createTransition(TRANSIT_OPEN) : null; RemoteTransition remoteTransition = r.takeRemoteTransition(); if (newTransition != null && remoteTransition != null) { newTransition.setRemoteTransition(remoteTransition); } - mService.getTransitionController().collect(r); + transitionController.collect(r); final boolean isTransient = r.getOptions() != null && r.getOptions().getTransientLaunch(); try { mService.deferWindowLayout(); @@ -1618,19 +1619,19 @@ class ActivityStarter { if (started) { // The activity is started new rather than just brought forward, so record // it as an existence change. - mService.getTransitionController().collectExistenceChange(r); + transitionController.collectExistenceChange(r); } if (isTransient) { // `r` isn't guaranteed to be the actual relevant activity, so we must wait // until after we launched to identify the relevant activity. - mService.getTransitionController().setTransientLaunch(mLastStartActivityRecord); + transitionController.setTransientLaunch(mLastStartActivityRecord); } if (newTransition != null) { - mService.getTransitionController().requestStartTransition(newTransition, + transitionController.requestStartTransition(newTransition, mTargetTask, remoteTransition); } else if (started) { // Make the collecting transition wait until this request is ready. - mService.getTransitionController().setReady(r, false); + transitionController.setReady(r, false); } } } @@ -2769,7 +2770,7 @@ class ActivityStarter { mNewTaskInfo != null ? mNewTaskInfo : mStartActivity.info, mNewTaskIntent != null ? mNewTaskIntent : mIntent, mVoiceSession, mVoiceInteractor, toTop, mStartActivity, mSourceRecord, mOptions); - mService.getTransitionController().collectExistenceChange(task); + task.mTransitionController.collectExistenceChange(task); addOrReparentStartingActivity(task, "setTaskFromReuseOrCreateNewTask - mReuseTask"); ProtoLog.v(WM_DEBUG_TASKS, "Starting new activity %s in new task %s", diff --git a/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java b/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java index c429e3fe9139..ba305929d808 100644 --- a/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java +++ b/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java @@ -1387,7 +1387,7 @@ public class ActivityTaskSupervisor implements RecentTasks.Callbacks { mUserLeaving = true; } - mService.getTransitionController().requestTransitionIfNeeded(TRANSIT_TO_FRONT, + task.mTransitionController.requestTransitionIfNeeded(TRANSIT_TO_FRONT, 0 /* flags */, task, task /* readyGroupRef */, options != null ? options.getRemoteTransition() : null); reason = reason + " findTaskToMoveToFront"; @@ -1563,17 +1563,17 @@ public class ActivityTaskSupervisor implements RecentTasks.Callbacks { return; } if (task.isVisible()) { - if (mService.getTransitionController().isCollecting()) { + if (task.mTransitionController.isCollecting()) { // We don't want the finishing to change the transition ready state since there will // not be corresponding setReady for finishing. - mService.getTransitionController().collectExistenceChange(task); + task.mTransitionController.collectExistenceChange(task); } else { - mService.getTransitionController().requestTransitionIfNeeded(TRANSIT_CLOSE, task); + task.mTransitionController.requestTransitionIfNeeded(TRANSIT_CLOSE, task); } } else { // Removing a non-visible task doesn't require a transition, but if there is one // collecting, this should be a member just in case. - mService.getTransitionController().collect(task); + task.mTransitionController.collect(task); } task.mInRemoveTask = true; try { @@ -1887,7 +1887,7 @@ public class ActivityTaskSupervisor implements RecentTasks.Callbacks { final ActivityRecord s = mStoppingActivities.get(i); final boolean animating = s.isAnimating(TRANSITION | PARENTS, ANIMATION_TYPE_APP_TRANSITION | ANIMATION_TYPE_RECENTS) - || mService.getTransitionController().inTransition(s); + || s.inTransition(); ProtoLog.v(WM_DEBUG_STATES, "Stopping %s: nowVisible=%b animating=%b " + "finishing=%s", s, s.nowVisible, animating, s.finishing); if (!animating || mService.mShuttingDown) { @@ -2188,7 +2188,7 @@ public class ActivityTaskSupervisor implements RecentTasks.Callbacks { } if (!task.supportsSplitScreenWindowingMode() || forceNonResizable) { - if (mService.getTransitionController().getTransitionPlayer() != null) return; + if (task.mTransitionController.isShellTransitionsEnabled()) return; // Dismiss docked root task. If task appeared to be in docked root task but is not // resizable - we need to move it to top of fullscreen root task, otherwise it will // be covered. diff --git a/services/core/java/com/android/server/wm/AppTransition.java b/services/core/java/com/android/server/wm/AppTransition.java index 929ac56f740e..e21a00b4aec6 100644 --- a/services/core/java/com/android/server/wm/AppTransition.java +++ b/services/core/java/com/android/server/wm/AppTransition.java @@ -1547,7 +1547,7 @@ public class AppTransition implements Dump { } boolean prepareAppTransition(@TransitionType int transit, @TransitionFlags int flags) { - if (mService.mAtmService.getTransitionController().getTransitionPlayer() != null) { + if (mDisplayContent.mTransitionController.isShellTransitionsEnabled()) { return false; } mNextAppTransitionRequests.add(transit); diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java index f800f0e395de..1db4c1da2023 100644 --- a/services/core/java/com/android/server/wm/DisplayContent.java +++ b/services/core/java/com/android/server/wm/DisplayContent.java @@ -1064,7 +1064,7 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp mAppTransition = new AppTransition(mWmService.mContext, mWmService, this); mAppTransition.registerListenerLocked(mWmService.mActivityManagerAppTransitionNotifier); - mAtmService.getTransitionController().registerLegacyListener( + mTransitionController.registerLegacyListener( mWmService.mActivityManagerAppTransitionNotifier); mAppTransition.registerListenerLocked(mFixedRotationTransitionListener); mAppTransitionController = new AppTransitionController(mWmService, this); @@ -1395,7 +1395,7 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp if (configChanged) { mWaitingForConfig = true; - if (mAtmService.getTransitionController().isShellTransitionsEnabled()) { + if (mTransitionController.isShellTransitionsEnabled()) { requestChangeTransitionIfNeeded(changes); } else { mWmService.startFreezingDisplay(0 /* exitAnim */, 0 /* enterAnim */, this); @@ -1515,7 +1515,7 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp } else if (currentConfig != null // If waiting for a remote rotation, don't prematurely update configuration. && !(mDisplayRotation.isWaitingForRemoteRotation() - || mAtmService.getTransitionController().isCollecting(this))) { + || mTransitionController.isCollecting(this))) { // No obvious action we need to take, but if our current state mismatches the // activity manager's, update it, disregarding font scale, which should remain set // to the value of the previous configuration. @@ -1914,8 +1914,7 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp */ private void applyRotation(final int oldRotation, final int rotation) { mDisplayRotation.applyCurrentRotation(rotation); - final boolean shellTransitions = - mWmService.mAtmService.getTransitionController().getTransitionPlayer() != null; + final boolean shellTransitions = mTransitionController.getTransitionPlayer() != null; final boolean rotateSeamlessly = mDisplayRotation.isRotatingSeamlessly() && !shellTransitions; final Transaction transaction = @@ -3070,7 +3069,7 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp if (isAnimating(TRANSITION | PARENTS) // isAnimating is a legacy transition query and will be removed, so also add a // check for whether this is in a shell-transition when not using legacy. - || mAtmService.getTransitionController().inTransition()) { + || mTransitionController.inTransition()) { mDeferredRemoval = true; return; } @@ -3176,7 +3175,7 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp * be non-zero. This method is no-op if the display has been collected. */ void requestChangeTransitionIfNeeded(@ActivityInfo.Config int changes) { - final TransitionController controller = mAtmService.getTransitionController(); + final TransitionController controller = mTransitionController; if (controller.isCollecting()) { if (!controller.isCollecting(this)) { controller.collect(this); @@ -3215,8 +3214,8 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp screenRotationAnimation.dumpDebug(proto, SCREEN_ROTATION_ANIMATION); } mDisplayFrames.dumpDebug(proto, DISPLAY_FRAMES); - if (mAtmService.getTransitionController().isShellTransitionsEnabled()) { - mAtmService.getTransitionController().dumpDebugLegacy(proto, APP_TRANSITION); + if (mTransitionController.isShellTransitionsEnabled()) { + mTransitionController.dumpDebugLegacy(proto, APP_TRANSITION); } else { mAppTransition.dumpDebug(proto, APP_TRANSITION); } @@ -5109,7 +5108,7 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp void requestTransitionAndLegacyPrepare(@WindowManager.TransitionType int transit, @WindowManager.TransitionFlags int flags) { prepareAppTransition(transit, flags); - mAtmService.getTransitionController().requestTransitionIfNeeded(transit, flags, + mTransitionController.requestTransitionIfNeeded(transit, flags, null /* trigger */, this); } @@ -5117,12 +5116,12 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp void requestTransitionAndLegacyPrepare(@WindowManager.TransitionType int transit, @Nullable WindowContainer trigger) { prepareAppTransition(transit); - mAtmService.getTransitionController().requestTransitionIfNeeded(transit, 0 /* flags */, + mTransitionController.requestTransitionIfNeeded(transit, 0 /* flags */, trigger, this); } void executeAppTransition() { - mAtmService.getTransitionController().setReady(this); + mTransitionController.setReady(this); if (mAppTransition.isTransitionSet()) { ProtoLog.w(WM_DEBUG_APP_TRANSITIONS, "Execute app transition: %s, displayId: %d Callers=%s", @@ -5171,9 +5170,9 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp /** Check if pending app transition is for activity / task launch. */ boolean isNextTransitionForward() { // TODO(b/191375840): decouple "forwardness" from transition system. - if (mAtmService.getTransitionController().isShellTransitionsEnabled()) { + if (mTransitionController.isShellTransitionsEnabled()) { @WindowManager.TransitionType int type = - mAtmService.getTransitionController().getCollectingTransitionType(); + mTransitionController.getCollectingTransitionType(); return type == TRANSIT_OPEN || type == TRANSIT_TO_FRONT; } return mAppTransition.containsTransitRequest(TRANSIT_OPEN) @@ -5748,7 +5747,7 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp } mWmService.mDisplayNotificationController.dispatchDisplayChanged( this, getConfiguration()); - if (isReady() && mAtmService.getTransitionController().isShellTransitionsEnabled()) { + if (isReady() && mTransitionController.isShellTransitionsEnabled()) { requestChangeTransitionIfNeeded(changes); } } diff --git a/services/core/java/com/android/server/wm/DisplayPolicy.java b/services/core/java/com/android/server/wm/DisplayPolicy.java index aa26d4faf854..ccfb174e3d16 100644 --- a/services/core/java/com/android/server/wm/DisplayPolicy.java +++ b/services/core/java/com/android/server/wm/DisplayPolicy.java @@ -641,8 +641,7 @@ public class DisplayPolicy { } }; displayContent.mAppTransition.registerListenerLocked(mAppTransitionListener); - mService.mAtmService.getTransitionController().registerLegacyListener( - mAppTransitionListener); + displayContent.mTransitionController.registerLegacyListener(mAppTransitionListener); mImmersiveModeConfirmation = new ImmersiveModeConfirmation(mContext, looper, mService.mVrModeEnabled); diff --git a/services/core/java/com/android/server/wm/DisplayRotation.java b/services/core/java/com/android/server/wm/DisplayRotation.java index 225a6ea20f3d..34e81498b1c3 100644 --- a/services/core/java/com/android/server/wm/DisplayRotation.java +++ b/services/core/java/com/android/server/wm/DisplayRotation.java @@ -413,7 +413,7 @@ public class DisplayRotation { */ boolean updateRotationUnchecked(boolean forceUpdate) { final boolean useShellTransitions = - mService.mAtmService.getTransitionController().getTransitionPlayer() != null; + mDisplayContent.mTransitionController.isShellTransitionsEnabled(); final int displayId = mDisplayContent.getDisplayId(); if (!forceUpdate && !useShellTransitions) { @@ -586,17 +586,17 @@ public class DisplayRotation { mService.mH.removeCallbacks(mDisplayRotationHandlerTimeout); mIsWaitingForRemoteRotation = false; - if (mService.mAtmService.getTransitionController().getTransitionPlayer() != null) { - if (!mService.mAtmService.getTransitionController().isCollecting()) { + if (mDisplayContent.mTransitionController.isShellTransitionsEnabled()) { + if (!mDisplayContent.mTransitionController.isCollecting()) { throw new IllegalStateException("Trying to rotate outside a transition"); } - mService.mAtmService.getTransitionController().collect(mDisplayContent); + mDisplayContent.mTransitionController.collect(mDisplayContent); // Go through all tasks and collect them before the rotation // TODO(shell-transitions): move collect() to onConfigurationChange once wallpaper // handling is synchronized. mDisplayContent.forAllTasks(task -> { if (task.isVisible()) { - mService.mAtmService.getTransitionController().collect(task); + mDisplayContent.mTransitionController.collect(task); } }); mDisplayContent.getInsetsStateController().addProvidersToTransition(); diff --git a/services/core/java/com/android/server/wm/EnsureActivitiesVisibleHelper.java b/services/core/java/com/android/server/wm/EnsureActivitiesVisibleHelper.java index 6560d15ca744..cddb1e7edb3b 100644 --- a/services/core/java/com/android/server/wm/EnsureActivitiesVisibleHelper.java +++ b/services/core/java/com/android/server/wm/EnsureActivitiesVisibleHelper.java @@ -135,7 +135,7 @@ class EnsureActivitiesVisibleHelper { setActivityVisibilityState(child.asActivityRecord(), starting, resumeTopActivity); } } - if (mTaskFragment.mAtmService.getTransitionController().getTransitionPlayer() != null) { + if (mTaskFragment.mTransitionController.isShellTransitionsEnabled()) { mTaskFragment.getDisplayContent().mWallpaperController.adjustWallpaperWindows(); } } diff --git a/services/core/java/com/android/server/wm/InsetsStateController.java b/services/core/java/com/android/server/wm/InsetsStateController.java index 2c4adcbf1404..c4ca8e364011 100644 --- a/services/core/java/com/android/server/wm/InsetsStateController.java +++ b/services/core/java/com/android/server/wm/InsetsStateController.java @@ -254,7 +254,7 @@ class InsetsStateController { if (p == null) continue; final WindowContainer wc = p.mWin; if (wc == null) continue; - mDisplayContent.mAtmService.getTransitionController().collect(wc); + mDisplayContent.mTransitionController.collect(wc); } } diff --git a/services/core/java/com/android/server/wm/PinnedTaskController.java b/services/core/java/com/android/server/wm/PinnedTaskController.java index 6014a87ae8f7..b4963c5b9f1c 100644 --- a/services/core/java/com/android/server/wm/PinnedTaskController.java +++ b/services/core/java/com/android/server/wm/PinnedTaskController.java @@ -211,7 +211,7 @@ class PinnedTaskController { } mFreezingTaskConfig = true; mDestRotatedBounds = new Rect(bounds); - if (!mService.mAtmService.getTransitionController().isShellTransitionsEnabled()) { + if (!mDisplayContent.mTransitionController.isShellTransitionsEnabled()) { continueOrientationChange(); } } diff --git a/services/core/java/com/android/server/wm/RootWindowContainer.java b/services/core/java/com/android/server/wm/RootWindowContainer.java index 40207882d73c..97ea41c2f228 100644 --- a/services/core/java/com/android/server/wm/RootWindowContainer.java +++ b/services/core/java/com/android/server/wm/RootWindowContainer.java @@ -2211,7 +2211,7 @@ class RootWindowContainer extends WindowContainer<DisplayContent> // display area, so reparent. rootTask.reparent(taskDisplayArea, true /* onTop */); } - mService.getTransitionController().requestTransitionIfNeeded(TRANSIT_PIP, rootTask); + rootTask.mTransitionController.requestTransitionIfNeeded(TRANSIT_PIP, rootTask); // Defer the windowing mode change until after the transition to prevent the activity // from doing work and changing the activity visuals while animating diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java index d89d212bab1f..0819549ad8df 100644 --- a/services/core/java/com/android/server/wm/Task.java +++ b/services/core/java/com/android/server/wm/Task.java @@ -4582,7 +4582,7 @@ class Task extends TaskFragment { // From fullscreen to PiP. if (topActivity != null && currentMode == WINDOWING_MODE_FULLSCREEN && windowingMode == WINDOWING_MODE_PINNED - && !mAtmService.getTransitionController().isShellTransitionsEnabled()) { + && !mTransitionController.isShellTransitionsEnabled()) { mDisplayContent.mPinnedTaskController .deferOrientationChangeForEnteringPipFromFullScreenIfNeeded(); } diff --git a/services/core/java/com/android/server/wm/TaskFragment.java b/services/core/java/com/android/server/wm/TaskFragment.java index 2ad42b29bcb1..44b22c643347 100644 --- a/services/core/java/com/android/server/wm/TaskFragment.java +++ b/services/core/java/com/android/server/wm/TaskFragment.java @@ -1479,7 +1479,7 @@ class TaskFragment extends WindowContainer<WindowContainer> { } else { prev.schedulePauseTimeout(); // Unset readiness since we now need to wait until this pause is complete. - mAtmService.getTransitionController().setReady(this, false /* ready */); + mTransitionController.setReady(this, false /* ready */); return true; } @@ -2283,7 +2283,7 @@ class TaskFragment extends WindowContainer<WindowContainer> { return false; } return isAnimating(TRANSITION | CHILDREN, WindowState.EXIT_ANIMATING_TYPES) - || mAtmService.getTransitionController().inTransition(this); + || inTransition(); } @Override diff --git a/services/core/java/com/android/server/wm/WallpaperController.java b/services/core/java/com/android/server/wm/WallpaperController.java index 7893612b5725..0909462585af 100644 --- a/services/core/java/com/android/server/wm/WallpaperController.java +++ b/services/core/java/com/android/server/wm/WallpaperController.java @@ -128,7 +128,7 @@ class WallpaperController { } mFindResults.resetTopWallpaper = true; - if (mService.mAtmService.getTransitionController().getTransitionPlayer() == null) { + if (!w.mTransitionController.isShellTransitionsEnabled()) { if (w.mActivityRecord != null && !w.mActivityRecord.isVisible() && !w.mActivityRecord.isAnimating(TRANSITION | PARENTS)) { // If this window's app token is hidden and not animating, it is of no interest. diff --git a/services/core/java/com/android/server/wm/WallpaperWindowToken.java b/services/core/java/com/android/server/wm/WallpaperWindowToken.java index b54e8b7a7b4e..75c84c44c48e 100644 --- a/services/core/java/com/android/server/wm/WallpaperWindowToken.java +++ b/services/core/java/com/android/server/wm/WallpaperWindowToken.java @@ -112,7 +112,7 @@ class WallpaperWindowToken extends WindowToken { setVisibility(visible); } final WallpaperController wallpaperController = mDisplayContent.mWallpaperController; - if (mWmService.mAtmService.getTransitionController().getTransitionPlayer() != null) { + if (mTransitionController.isShellTransitionsEnabled()) { return; } @@ -157,12 +157,12 @@ class WallpaperWindowToken extends WindowToken { */ void setVisibility(boolean visible) { // Before setting mVisibleRequested so we can track changes. - mWmService.mAtmService.getTransitionController().collect(this); + mTransitionController.collect(this); setVisibleRequested(visible); // If in a transition, defer commits for activities that are going invisible - if (!visible && (mWmService.mAtmService.getTransitionController().inTransition() + if (!visible && (mTransitionController.inTransition() || getDisplayContent().mAppTransition.isRunning())) { return; } diff --git a/services/core/java/com/android/server/wm/WindowContainer.java b/services/core/java/com/android/server/wm/WindowContainer.java index 38e20555f236..841783d6b8cd 100644 --- a/services/core/java/com/android/server/wm/WindowContainer.java +++ b/services/core/java/com/android/server/wm/WindowContainer.java @@ -197,10 +197,10 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer< * Applied as part of the animation pass in "prepareSurfaces". */ protected final SurfaceAnimator mSurfaceAnimator; - private boolean mAnyParentAnimating; final SurfaceFreezer mSurfaceFreezer; protected final WindowManagerService mWmService; + final TransitionController mTransitionController; /** * Sources which triggered a surface animation on this container. An animation target can be @@ -331,6 +331,7 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer< WindowContainer(WindowManagerService wms) { mWmService = wms; + mTransitionController = mWmService.mAtmService.getTransitionController(); mPendingTransaction = wms.mTransactionFactory.get(); mSyncTransaction = wms.mTransactionFactory.get(); mSurfaceAnimator = new SurfaceAnimator(this, this::onAnimationFinished, wms); @@ -1008,7 +1009,7 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer< } boolean inTransition() { - return mWmService.mAtmService.getTransitionController().inTransition(this); + return mTransitionController.inTransition(this); } void sendAppVisibilityToClients() { @@ -2310,7 +2311,7 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer< void assignLayer(Transaction t, int layer) { // Don't assign layers while a transition animation is playing // TODO(b/173528115): establish robust best-practices around z-order fighting. - if (mWmService.mAtmService.getTransitionController().isPlaying()) return; + if (mTransitionController.isPlaying()) return; final boolean changed = layer != mLastLayer || mLastRelativeToLayer != null; if (mSurfaceControl != null && changed) { setLayer(t, layer); diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index 0e99c0f1bad0..c77cd509ca4f 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -1804,7 +1804,7 @@ public class WindowManagerService extends IWindowManager.Stub winAnimator.mEnterAnimationPending = true; winAnimator.mEnteringAnimation = true; // Check if we need to prepare a transition for replacing window first. - if (mAtmService.getTransitionController().getTransitionPlayer() == null + if (!win.mTransitionController.isShellTransitionsEnabled() && activity != null && activity.isVisible() && !prepareWindowReplacementTransition(activity)) { // If not, check if need to set up a dummy transition during display freeze @@ -2569,7 +2569,7 @@ public class WindowManagerService extends IWindowManager.Stub if (win.mAttrs.type == TYPE_APPLICATION_STARTING) { transit = WindowManagerPolicy.TRANSIT_PREVIEW_DONE; } - if (mAtmService.getTransitionController().inTransition(win)) { + if (win.inTransition()) { focusMayChange = true; win.mAnimatingExit = true; } else if (win.isWinVisibleLw() && winAnimator.applyAnimationLocked(transit, false)) { @@ -4051,7 +4051,7 @@ public class WindowManagerService extends IWindowManager.Stub final boolean pendingRemoteRotation = rotationChanged && (displayContent.getDisplayRotation().isWaitingForRemoteRotation() - || mAtmService.getTransitionController().isCollecting()); + || displayContent.mTransitionController.isCollecting()); // Even if alwaysSend, we are waiting for a transition or remote to provide // rotated configuration, so we can't update configuration yet. if (!pendingRemoteRotation) { diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java index d629065e105a..5f9d4f5182bc 100644 --- a/services/core/java/com/android/server/wm/WindowState.java +++ b/services/core/java/com/android/server/wm/WindowState.java @@ -1175,8 +1175,7 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP if (WindowManager.LayoutParams.isSystemAlertWindowType(mAttrs.type)) { return TouchOcclusionMode.USE_OPACITY; } - if (isAnimating(PARENTS | TRANSITION, ANIMATION_TYPE_ALL) - || mWmService.mAtmService.getTransitionController().inTransition(this)) { + if (isAnimating(PARENTS | TRANSITION, ANIMATION_TYPE_ALL) || inTransition()) { return TouchOcclusionMode.USE_OPACITY; } return TouchOcclusionMode.BLOCK_UNTRUSTED; @@ -2326,7 +2325,7 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP && (mWindowFrames.mRelFrame.top != mWindowFrames.mLastRelFrame.top || mWindowFrames.mRelFrame.left != mWindowFrames.mLastRelFrame.left) && (!mIsChildWindow || !getParentWindow().hasMoved()) - && !mWmService.mAtmService.getTransitionController().isCollecting(); + && !mTransitionController.isCollecting(); } boolean isObscuringDisplay() { @@ -2712,8 +2711,7 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP // Don't allow transient-launch activities to take IME. if (rootTask != null && mActivityRecord != null - && mWmService.mAtmService.getTransitionController().isTransientLaunch( - mActivityRecord)) { + && mTransitionController.isTransientLaunch(mActivityRecord)) { return false; } @@ -6075,7 +6073,7 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP } if (mActivityRecord != null - && mWmService.mAtmService.getTransitionController().isShellTransitionsEnabled() + && mTransitionController.isShellTransitionsEnabled() && mAttrs.type == TYPE_APPLICATION_STARTING) { mWmService.mAtmService.mTaskSupervisor.getActivityMetricsLogger() .notifyStartingWindowDrawn(mActivityRecord); |