Loading services/core/java/com/android/server/wm/ActivityMetricsLogger.java +1 −2 Original line number Diff line number Diff line Loading @@ -857,8 +857,7 @@ class ActivityMetricsLogger { info.mWindowsDrawnDelayMs = info.calculateDelay(timestampNs); info.mIsDrawn = true; final TransitionInfoSnapshot infoSnapshot = new TransitionInfoSnapshot(info); if (info.mLoggedTransitionStarting || (!r.mDisplayContent.mOpeningApps.contains(r) && !r.mTransitionController.isCollecting(r))) { if (info.mLoggedTransitionStarting || !r.mTransitionController.isCollecting(r)) { done(false /* abort */, info, "notifyWindowsDrawn", timestampNs); } Loading services/core/java/com/android/server/wm/ActivityRecord.java +5 −67 Original line number Diff line number Diff line Loading @@ -159,7 +159,6 @@ import static com.android.server.wm.ActivityRecordProto.FRONT_OF_TASK; import static com.android.server.wm.ActivityRecordProto.IN_SIZE_COMPAT_MODE; import static com.android.server.wm.ActivityRecordProto.IS_ANIMATING; import static com.android.server.wm.ActivityRecordProto.IS_USER_FULLSCREEN_OVERRIDE_ENABLED; import static com.android.server.wm.ActivityRecordProto.IS_WAITING_FOR_TRANSITION_START; import static com.android.server.wm.ActivityRecordProto.LAST_ALL_DRAWN; import static com.android.server.wm.ActivityRecordProto.LAST_DROP_INPUT_MODE; import static com.android.server.wm.ActivityRecordProto.LAST_SURFACE_SHOWING; Loading Loading @@ -330,7 +329,6 @@ import android.view.RemoteAnimationDefinition; import android.view.SurfaceControl; import android.view.SurfaceControl.Transaction; import android.view.WindowInsets; import android.view.WindowInsets.Type; import android.view.WindowManager; import android.view.WindowManager.LayoutParams; import android.view.WindowManager.TransitionOldType; Loading Loading @@ -1519,17 +1517,7 @@ final class ActivityRecord extends WindowToken { this.task = newTask; if (shouldStartChangeTransition(newParent, oldParent)) { if (mTransitionController.isShellTransitionsEnabled()) { // For Shell transition, call #initializeChangeTransition directly to take the // screenshot at the Activity level. And Shell will be in charge of handling the // surface reparent and crop. initializeChangeTransition(getBounds()); } else { // For legacy app transition, we want to take a screenshot of the Activity surface, // but animate the change transition on TaskFragment level to get the correct window // crop. newParent.initializeChangeTransition(getBounds(), getSurfaceControl()); } mTransitionController.collectVisibleChange(this); } super.onParentChanged(newParent, oldParent); Loading Loading @@ -1557,16 +1545,6 @@ final class ActivityRecord extends WindowToken { mLastReportedPictureInPictureMode = inPinnedWindowingMode(); } // When the associated task is {@code null}, the {@link ActivityRecord} can no longer // access visual elements like the {@link DisplayContent}. We must remove any associations // such as animations. if (task == null) { // It is possible we have been marked as a closing app earlier. We must remove ourselves // from this list so we do not participate in any future animations. if (getDisplayContent() != null) { getDisplayContent().mClosingApps.remove(this); } } final Task rootTask = getRootTask(); if (task == mLastParentBeforePip && task != null) { // Notify the TaskFragmentOrganizer that the activity is reparented back from pip. Loading Loading @@ -1749,14 +1727,6 @@ final class ActivityRecord extends WindowToken { return; } prevDc.onRunningActivityChanged(); if (prevDc.mOpeningApps.remove(this)) { // Transfer opening transition to new display. mDisplayContent.mOpeningApps.add(this); mDisplayContent.executeAppTransition(); } prevDc.mClosingApps.remove(this); prevDc.getDisplayPolicy().removeRelaunchingApp(this); if (prevDc.mFocusedApp == this) { Loading Loading @@ -4392,7 +4362,6 @@ final class ActivityRecord extends WindowToken { ProtoLog.v(WM_DEBUG_APP_TRANSITIONS, "Removing app token: %s", this); getDisplayContent().mOpeningApps.remove(this); getDisplayContent().mUnknownAppVisibilityController.appRemovedOrHidden(this); mWmService.mSnapshotController.onAppRemoved(this); mAtmService.mStartingProcessActivities.remove(this); Loading @@ -4404,20 +4373,9 @@ final class ActivityRecord extends WindowToken { mAppCompatController.getTransparentPolicy().stop(); // Defer removal of this activity when either a child is animating, or app transition is on // going. App transition animation might be applied on the parent task not on the activity, // but the actual frame buffer is associated with the activity, so we have to keep the // activity while a parent is animating. boolean delayed = isAnimating(TRANSITION | PARENTS | CHILDREN, ANIMATION_TYPE_APP_TRANSITION | ANIMATION_TYPE_WINDOW_ANIMATION); if (getDisplayContent().mClosingApps.contains(this)) { delayed = true; } else if (getDisplayContent().mAppTransition.isTransitionSet()) { getDisplayContent().mClosingApps.add(this); delayed = true; } else if (mTransitionController.inTransition()) { delayed = true; } // going. The handleCompleteDeferredRemoval will continue the removal. final boolean delayed = isAnimating(CHILDREN, ANIMATION_TYPE_WINDOW_ANIMATION) || mTransitionController.inTransition(); // Don't commit visibility if it is waiting to animate. It will be set post animation. if (!delayed) { commitVisibility(false /* visible */, true /* performLayout */); Loading Loading @@ -5552,9 +5510,6 @@ final class ActivityRecord extends WindowToken { mAtmService.mBackNavigationController.onAppVisibilityChanged(this, visible); final DisplayContent displayContent = getDisplayContent(); displayContent.mOpeningApps.remove(this); displayContent.mClosingApps.remove(this); setVisibleRequested(visible); mLastDeferHidingClient = deferHidingClient; Loading @@ -5567,13 +5522,6 @@ final class ActivityRecord extends WindowToken { setClientVisible(false); } } else { if (!appTransition.isTransitionSet() && appTransition.isReady()) { // Add the app mOpeningApps if transition is unset but ready. This means // we're doing a screen freeze, and the unfreeze will wait for all opening // apps to be ready. displayContent.mOpeningApps.add(this); } startingMoved = false; // If the token is currently hidden (should be the common case), or has been // stopped, then we need to set up to wait for its windows to be ready. Loading Loading @@ -6775,7 +6723,7 @@ final class ActivityRecord extends WindowToken { setAppLayoutChanges(FINISH_LAYOUT_REDO_ANIM, "checkAppWindowsReadyToShow"); // We can now show all of the drawn windows! if (!getDisplayContent().mOpeningApps.contains(this) && canShowWindows()) { if (canShowWindows()) { showAllWindowsLocked(); } } Loading Loading @@ -7449,15 +7397,6 @@ final class ActivityRecord extends WindowToken { return boundsLayer; } @Override boolean isWaitingForTransitionStart() { final DisplayContent dc = getDisplayContent(); return dc != null && dc.mAppTransition.isTransitionSet() && (dc.mOpeningApps.contains(this) || dc.mClosingApps.contains(this) || dc.mChangingContainers.contains(this)); } boolean isTransitionForward() { return (mStartingData != null && mStartingData.mIsTransitionForward) || mDisplayContent.isNextTransitionForward(); Loading Loading @@ -9561,7 +9500,6 @@ final class ActivityRecord extends WindowToken { writeNameToProto(proto, NAME); super.dumpDebug(proto, WINDOW_TOKEN, logLevel); proto.write(LAST_SURFACE_SHOWING, mLastSurfaceShowing); proto.write(IS_WAITING_FOR_TRANSITION_START, isWaitingForTransitionStart()); proto.write(IS_ANIMATING, isAnimating(TRANSITION | PARENTS | CHILDREN, ANIMATION_TYPE_APP_TRANSITION | ANIMATION_TYPE_WINDOW_ANIMATION)); proto.write(FILLS_PARENT, fillsParent()); Loading services/core/java/com/android/server/wm/AppTransition.java +0 −21 Original line number Diff line number Diff line Loading @@ -89,7 +89,6 @@ import static com.android.internal.R.styleable.WindowAnimation_wallpaperIntraOpe import static com.android.internal.R.styleable.WindowAnimation_wallpaperOpenEnterAnimation; import static com.android.internal.R.styleable.WindowAnimation_wallpaperOpenExitAnimation; import static com.android.internal.protolog.WmProtoLogGroups.WM_DEBUG_ANIM; import static com.android.internal.protolog.WmProtoLogGroups.WM_DEBUG_APP_TRANSITIONS; import static com.android.internal.protolog.WmProtoLogGroups.WM_DEBUG_APP_TRANSITIONS_ANIM; import static com.android.server.wm.AppTransitionProto.APP_TRANSITION_STATE; import static com.android.server.wm.AppTransitionProto.LAST_USED_APP_TRANSITION; Loading Loading @@ -1554,26 +1553,6 @@ public class AppTransition implements Dump { } private void handleAppTransitionTimeout() { synchronized (mService.mGlobalLock) { final DisplayContent dc = mDisplayContent; if (dc == null) { return; } notifyAppTransitionTimeoutLocked(); if (isTransitionSet() || !dc.mOpeningApps.isEmpty() || !dc.mClosingApps.isEmpty() || !dc.mChangingContainers.isEmpty()) { ProtoLog.v(WM_DEBUG_APP_TRANSITIONS, "*** APP TRANSITION TIMEOUT. displayId=%d isTransitionSet()=%b " + "mOpeningApps.size()=%d mClosingApps.size()=%d " + "mChangingApps.size()=%d", dc.getDisplayId(), dc.mAppTransition.isTransitionSet(), dc.mOpeningApps.size(), dc.mClosingApps.size(), dc.mChangingContainers.size()); setTimeout(); mService.mWindowPlacerLocked.performSurfacePlacement(); } } } private static void doAnimationCallback(@NonNull IRemoteCallback callback) { Loading services/core/java/com/android/server/wm/DisplayContent.java +4 −45 Original line number Diff line number Diff line Loading @@ -108,7 +108,6 @@ import static com.android.server.policy.WindowManagerPolicy.FINISH_LAYOUT_REDO_W import static com.android.server.wm.ActivityRecord.State.RESUMED; import static com.android.server.wm.ActivityTaskManagerService.POWER_MODE_REASON_CHANGE_DISPLAY; import static com.android.server.wm.DisplayContentProto.APP_TRANSITION; import static com.android.server.wm.DisplayContentProto.CLOSING_APPS; import static com.android.server.wm.DisplayContentProto.CURRENT_FOCUS; import static com.android.server.wm.DisplayContentProto.DISPLAY_FRAMES; import static com.android.server.wm.DisplayContentProto.DISPLAY_INFO; Loading @@ -125,7 +124,6 @@ import static com.android.server.wm.DisplayContentProto.INPUT_METHOD_TARGET; import static com.android.server.wm.DisplayContentProto.IS_SLEEPING; import static com.android.server.wm.DisplayContentProto.KEEP_CLEAR_AREAS; import static com.android.server.wm.DisplayContentProto.MIN_SIZE_OF_RESIZEABLE_TASK_DP; import static com.android.server.wm.DisplayContentProto.OPENING_APPS; import static com.android.server.wm.DisplayContentProto.RESUMED_ACTIVITY; import static com.android.server.wm.DisplayContentProto.ROOT_DISPLAY_AREA; import static com.android.server.wm.DisplayContentProto.SLEEP_TOKENS; Loading Loading @@ -196,7 +194,6 @@ import android.os.UserHandle; import android.os.UserManager; import android.os.WorkSource; import android.provider.Settings; import android.util.ArrayMap; import android.util.ArraySet; import android.util.DisplayMetrics; import android.util.DisplayUtils; Loading Loading @@ -367,15 +364,7 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp final AppTransition mAppTransition; final ArraySet<ActivityRecord> mOpeningApps = new ArraySet<>(); final ArraySet<ActivityRecord> mClosingApps = new ArraySet<>(); final ArraySet<WindowContainer> mChangingContainers = new ArraySet<>(); final UnknownAppVisibilityController mUnknownAppVisibilityController; /** * If a container is closing when resizing, keeps track of its starting bounds when it is * removed from {@link #mChangingContainers}. */ final ArrayMap<WindowContainer, Rect> mClosingChangingContainers = new ArrayMap<>(); private MetricsLogger mMetricsLogger; Loading Loading @@ -1910,18 +1899,11 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp return false; } if (checkOpening) { if (mTransitionController.isShellTransitionsEnabled()) { if (!mTransitionController.isCollecting(r)) { // Apply normal rotation animation in case the activity changes requested // orientation without activity switch. return false; } } else { if (!mAppTransition.isTransitionSet() || !mOpeningApps.contains(r)) { // Apply normal rotation animation in case of the activity set different // requested orientation without activity switch, or the transition is unset due // to starting window was transferred ({@link #mSkipAppTransitionAnimation}). return false; } } if (r.isState(RESUMED) && !r.getTask().mInResumeTopActivity) { // If the activity is executing or has done the lifecycle callback, use normal // rotation animation so the display info can be updated immediately (see Loading Loading @@ -3372,10 +3354,6 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp void removeImmediately() { mDeferredRemoval = false; try { // Clear all transitions & screen frozen states when removing display. mOpeningApps.clear(); mClosingApps.clear(); mChangingContainers.clear(); mUnknownAppVisibilityController.clear(); mAppTransition.removeAppTransitionTimeoutCallbacks(); mTransitionController.unregisterLegacyListener(mFixedRotationTransitionListener); Loading Loading @@ -3567,12 +3545,6 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp if (mFocusedApp != null) { mFocusedApp.writeNameToProto(proto, FOCUSED_APP); } for (int i = mOpeningApps.size() - 1; i >= 0; i--) { mOpeningApps.valueAt(i).writeIdentifierToProto(proto, OPENING_APPS); } for (int i = mClosingApps.size() - 1; i >= 0; i--) { mClosingApps.valueAt(i).writeIdentifierToProto(proto, CLOSING_APPS); } final Task focusedRootTask = getFocusedRootTask(); if (focusedRootTask != null) { Loading Loading @@ -4831,19 +4803,6 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp } } if (!mOpeningApps.isEmpty() || !mClosingApps.isEmpty() || !mChangingContainers.isEmpty()) { pw.println(); if (mOpeningApps.size() > 0) { pw.print(" mOpeningApps="); pw.println(mOpeningApps); } if (mClosingApps.size() > 0) { pw.print(" mClosingApps="); pw.println(mClosingApps); } if (mChangingContainers.size() > 0) { pw.print(" mChangingApps="); pw.println(mChangingContainers); } } mUnknownAppVisibilityController.dump(pw, " "); } Loading services/core/java/com/android/server/wm/Task.java +1 −1 Original line number Diff line number Diff line Loading @@ -2028,7 +2028,7 @@ class Task extends TaskFragment { } if (shouldStartChangeTransition(prevWinMode, mTmpPrevBounds)) { initializeChangeTransition(mTmpPrevBounds); mTransitionController.collectVisibleChange(this); } // If the configuration supports persistent bounds (eg. Freeform), keep track of the Loading Loading
services/core/java/com/android/server/wm/ActivityMetricsLogger.java +1 −2 Original line number Diff line number Diff line Loading @@ -857,8 +857,7 @@ class ActivityMetricsLogger { info.mWindowsDrawnDelayMs = info.calculateDelay(timestampNs); info.mIsDrawn = true; final TransitionInfoSnapshot infoSnapshot = new TransitionInfoSnapshot(info); if (info.mLoggedTransitionStarting || (!r.mDisplayContent.mOpeningApps.contains(r) && !r.mTransitionController.isCollecting(r))) { if (info.mLoggedTransitionStarting || !r.mTransitionController.isCollecting(r)) { done(false /* abort */, info, "notifyWindowsDrawn", timestampNs); } Loading
services/core/java/com/android/server/wm/ActivityRecord.java +5 −67 Original line number Diff line number Diff line Loading @@ -159,7 +159,6 @@ import static com.android.server.wm.ActivityRecordProto.FRONT_OF_TASK; import static com.android.server.wm.ActivityRecordProto.IN_SIZE_COMPAT_MODE; import static com.android.server.wm.ActivityRecordProto.IS_ANIMATING; import static com.android.server.wm.ActivityRecordProto.IS_USER_FULLSCREEN_OVERRIDE_ENABLED; import static com.android.server.wm.ActivityRecordProto.IS_WAITING_FOR_TRANSITION_START; import static com.android.server.wm.ActivityRecordProto.LAST_ALL_DRAWN; import static com.android.server.wm.ActivityRecordProto.LAST_DROP_INPUT_MODE; import static com.android.server.wm.ActivityRecordProto.LAST_SURFACE_SHOWING; Loading Loading @@ -330,7 +329,6 @@ import android.view.RemoteAnimationDefinition; import android.view.SurfaceControl; import android.view.SurfaceControl.Transaction; import android.view.WindowInsets; import android.view.WindowInsets.Type; import android.view.WindowManager; import android.view.WindowManager.LayoutParams; import android.view.WindowManager.TransitionOldType; Loading Loading @@ -1519,17 +1517,7 @@ final class ActivityRecord extends WindowToken { this.task = newTask; if (shouldStartChangeTransition(newParent, oldParent)) { if (mTransitionController.isShellTransitionsEnabled()) { // For Shell transition, call #initializeChangeTransition directly to take the // screenshot at the Activity level. And Shell will be in charge of handling the // surface reparent and crop. initializeChangeTransition(getBounds()); } else { // For legacy app transition, we want to take a screenshot of the Activity surface, // but animate the change transition on TaskFragment level to get the correct window // crop. newParent.initializeChangeTransition(getBounds(), getSurfaceControl()); } mTransitionController.collectVisibleChange(this); } super.onParentChanged(newParent, oldParent); Loading Loading @@ -1557,16 +1545,6 @@ final class ActivityRecord extends WindowToken { mLastReportedPictureInPictureMode = inPinnedWindowingMode(); } // When the associated task is {@code null}, the {@link ActivityRecord} can no longer // access visual elements like the {@link DisplayContent}. We must remove any associations // such as animations. if (task == null) { // It is possible we have been marked as a closing app earlier. We must remove ourselves // from this list so we do not participate in any future animations. if (getDisplayContent() != null) { getDisplayContent().mClosingApps.remove(this); } } final Task rootTask = getRootTask(); if (task == mLastParentBeforePip && task != null) { // Notify the TaskFragmentOrganizer that the activity is reparented back from pip. Loading Loading @@ -1749,14 +1727,6 @@ final class ActivityRecord extends WindowToken { return; } prevDc.onRunningActivityChanged(); if (prevDc.mOpeningApps.remove(this)) { // Transfer opening transition to new display. mDisplayContent.mOpeningApps.add(this); mDisplayContent.executeAppTransition(); } prevDc.mClosingApps.remove(this); prevDc.getDisplayPolicy().removeRelaunchingApp(this); if (prevDc.mFocusedApp == this) { Loading Loading @@ -4392,7 +4362,6 @@ final class ActivityRecord extends WindowToken { ProtoLog.v(WM_DEBUG_APP_TRANSITIONS, "Removing app token: %s", this); getDisplayContent().mOpeningApps.remove(this); getDisplayContent().mUnknownAppVisibilityController.appRemovedOrHidden(this); mWmService.mSnapshotController.onAppRemoved(this); mAtmService.mStartingProcessActivities.remove(this); Loading @@ -4404,20 +4373,9 @@ final class ActivityRecord extends WindowToken { mAppCompatController.getTransparentPolicy().stop(); // Defer removal of this activity when either a child is animating, or app transition is on // going. App transition animation might be applied on the parent task not on the activity, // but the actual frame buffer is associated with the activity, so we have to keep the // activity while a parent is animating. boolean delayed = isAnimating(TRANSITION | PARENTS | CHILDREN, ANIMATION_TYPE_APP_TRANSITION | ANIMATION_TYPE_WINDOW_ANIMATION); if (getDisplayContent().mClosingApps.contains(this)) { delayed = true; } else if (getDisplayContent().mAppTransition.isTransitionSet()) { getDisplayContent().mClosingApps.add(this); delayed = true; } else if (mTransitionController.inTransition()) { delayed = true; } // going. The handleCompleteDeferredRemoval will continue the removal. final boolean delayed = isAnimating(CHILDREN, ANIMATION_TYPE_WINDOW_ANIMATION) || mTransitionController.inTransition(); // Don't commit visibility if it is waiting to animate. It will be set post animation. if (!delayed) { commitVisibility(false /* visible */, true /* performLayout */); Loading Loading @@ -5552,9 +5510,6 @@ final class ActivityRecord extends WindowToken { mAtmService.mBackNavigationController.onAppVisibilityChanged(this, visible); final DisplayContent displayContent = getDisplayContent(); displayContent.mOpeningApps.remove(this); displayContent.mClosingApps.remove(this); setVisibleRequested(visible); mLastDeferHidingClient = deferHidingClient; Loading @@ -5567,13 +5522,6 @@ final class ActivityRecord extends WindowToken { setClientVisible(false); } } else { if (!appTransition.isTransitionSet() && appTransition.isReady()) { // Add the app mOpeningApps if transition is unset but ready. This means // we're doing a screen freeze, and the unfreeze will wait for all opening // apps to be ready. displayContent.mOpeningApps.add(this); } startingMoved = false; // If the token is currently hidden (should be the common case), or has been // stopped, then we need to set up to wait for its windows to be ready. Loading Loading @@ -6775,7 +6723,7 @@ final class ActivityRecord extends WindowToken { setAppLayoutChanges(FINISH_LAYOUT_REDO_ANIM, "checkAppWindowsReadyToShow"); // We can now show all of the drawn windows! if (!getDisplayContent().mOpeningApps.contains(this) && canShowWindows()) { if (canShowWindows()) { showAllWindowsLocked(); } } Loading Loading @@ -7449,15 +7397,6 @@ final class ActivityRecord extends WindowToken { return boundsLayer; } @Override boolean isWaitingForTransitionStart() { final DisplayContent dc = getDisplayContent(); return dc != null && dc.mAppTransition.isTransitionSet() && (dc.mOpeningApps.contains(this) || dc.mClosingApps.contains(this) || dc.mChangingContainers.contains(this)); } boolean isTransitionForward() { return (mStartingData != null && mStartingData.mIsTransitionForward) || mDisplayContent.isNextTransitionForward(); Loading Loading @@ -9561,7 +9500,6 @@ final class ActivityRecord extends WindowToken { writeNameToProto(proto, NAME); super.dumpDebug(proto, WINDOW_TOKEN, logLevel); proto.write(LAST_SURFACE_SHOWING, mLastSurfaceShowing); proto.write(IS_WAITING_FOR_TRANSITION_START, isWaitingForTransitionStart()); proto.write(IS_ANIMATING, isAnimating(TRANSITION | PARENTS | CHILDREN, ANIMATION_TYPE_APP_TRANSITION | ANIMATION_TYPE_WINDOW_ANIMATION)); proto.write(FILLS_PARENT, fillsParent()); Loading
services/core/java/com/android/server/wm/AppTransition.java +0 −21 Original line number Diff line number Diff line Loading @@ -89,7 +89,6 @@ import static com.android.internal.R.styleable.WindowAnimation_wallpaperIntraOpe import static com.android.internal.R.styleable.WindowAnimation_wallpaperOpenEnterAnimation; import static com.android.internal.R.styleable.WindowAnimation_wallpaperOpenExitAnimation; import static com.android.internal.protolog.WmProtoLogGroups.WM_DEBUG_ANIM; import static com.android.internal.protolog.WmProtoLogGroups.WM_DEBUG_APP_TRANSITIONS; import static com.android.internal.protolog.WmProtoLogGroups.WM_DEBUG_APP_TRANSITIONS_ANIM; import static com.android.server.wm.AppTransitionProto.APP_TRANSITION_STATE; import static com.android.server.wm.AppTransitionProto.LAST_USED_APP_TRANSITION; Loading Loading @@ -1554,26 +1553,6 @@ public class AppTransition implements Dump { } private void handleAppTransitionTimeout() { synchronized (mService.mGlobalLock) { final DisplayContent dc = mDisplayContent; if (dc == null) { return; } notifyAppTransitionTimeoutLocked(); if (isTransitionSet() || !dc.mOpeningApps.isEmpty() || !dc.mClosingApps.isEmpty() || !dc.mChangingContainers.isEmpty()) { ProtoLog.v(WM_DEBUG_APP_TRANSITIONS, "*** APP TRANSITION TIMEOUT. displayId=%d isTransitionSet()=%b " + "mOpeningApps.size()=%d mClosingApps.size()=%d " + "mChangingApps.size()=%d", dc.getDisplayId(), dc.mAppTransition.isTransitionSet(), dc.mOpeningApps.size(), dc.mClosingApps.size(), dc.mChangingContainers.size()); setTimeout(); mService.mWindowPlacerLocked.performSurfacePlacement(); } } } private static void doAnimationCallback(@NonNull IRemoteCallback callback) { Loading
services/core/java/com/android/server/wm/DisplayContent.java +4 −45 Original line number Diff line number Diff line Loading @@ -108,7 +108,6 @@ import static com.android.server.policy.WindowManagerPolicy.FINISH_LAYOUT_REDO_W import static com.android.server.wm.ActivityRecord.State.RESUMED; import static com.android.server.wm.ActivityTaskManagerService.POWER_MODE_REASON_CHANGE_DISPLAY; import static com.android.server.wm.DisplayContentProto.APP_TRANSITION; import static com.android.server.wm.DisplayContentProto.CLOSING_APPS; import static com.android.server.wm.DisplayContentProto.CURRENT_FOCUS; import static com.android.server.wm.DisplayContentProto.DISPLAY_FRAMES; import static com.android.server.wm.DisplayContentProto.DISPLAY_INFO; Loading @@ -125,7 +124,6 @@ import static com.android.server.wm.DisplayContentProto.INPUT_METHOD_TARGET; import static com.android.server.wm.DisplayContentProto.IS_SLEEPING; import static com.android.server.wm.DisplayContentProto.KEEP_CLEAR_AREAS; import static com.android.server.wm.DisplayContentProto.MIN_SIZE_OF_RESIZEABLE_TASK_DP; import static com.android.server.wm.DisplayContentProto.OPENING_APPS; import static com.android.server.wm.DisplayContentProto.RESUMED_ACTIVITY; import static com.android.server.wm.DisplayContentProto.ROOT_DISPLAY_AREA; import static com.android.server.wm.DisplayContentProto.SLEEP_TOKENS; Loading Loading @@ -196,7 +194,6 @@ import android.os.UserHandle; import android.os.UserManager; import android.os.WorkSource; import android.provider.Settings; import android.util.ArrayMap; import android.util.ArraySet; import android.util.DisplayMetrics; import android.util.DisplayUtils; Loading Loading @@ -367,15 +364,7 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp final AppTransition mAppTransition; final ArraySet<ActivityRecord> mOpeningApps = new ArraySet<>(); final ArraySet<ActivityRecord> mClosingApps = new ArraySet<>(); final ArraySet<WindowContainer> mChangingContainers = new ArraySet<>(); final UnknownAppVisibilityController mUnknownAppVisibilityController; /** * If a container is closing when resizing, keeps track of its starting bounds when it is * removed from {@link #mChangingContainers}. */ final ArrayMap<WindowContainer, Rect> mClosingChangingContainers = new ArrayMap<>(); private MetricsLogger mMetricsLogger; Loading Loading @@ -1910,18 +1899,11 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp return false; } if (checkOpening) { if (mTransitionController.isShellTransitionsEnabled()) { if (!mTransitionController.isCollecting(r)) { // Apply normal rotation animation in case the activity changes requested // orientation without activity switch. return false; } } else { if (!mAppTransition.isTransitionSet() || !mOpeningApps.contains(r)) { // Apply normal rotation animation in case of the activity set different // requested orientation without activity switch, or the transition is unset due // to starting window was transferred ({@link #mSkipAppTransitionAnimation}). return false; } } if (r.isState(RESUMED) && !r.getTask().mInResumeTopActivity) { // If the activity is executing or has done the lifecycle callback, use normal // rotation animation so the display info can be updated immediately (see Loading Loading @@ -3372,10 +3354,6 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp void removeImmediately() { mDeferredRemoval = false; try { // Clear all transitions & screen frozen states when removing display. mOpeningApps.clear(); mClosingApps.clear(); mChangingContainers.clear(); mUnknownAppVisibilityController.clear(); mAppTransition.removeAppTransitionTimeoutCallbacks(); mTransitionController.unregisterLegacyListener(mFixedRotationTransitionListener); Loading Loading @@ -3567,12 +3545,6 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp if (mFocusedApp != null) { mFocusedApp.writeNameToProto(proto, FOCUSED_APP); } for (int i = mOpeningApps.size() - 1; i >= 0; i--) { mOpeningApps.valueAt(i).writeIdentifierToProto(proto, OPENING_APPS); } for (int i = mClosingApps.size() - 1; i >= 0; i--) { mClosingApps.valueAt(i).writeIdentifierToProto(proto, CLOSING_APPS); } final Task focusedRootTask = getFocusedRootTask(); if (focusedRootTask != null) { Loading Loading @@ -4831,19 +4803,6 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp } } if (!mOpeningApps.isEmpty() || !mClosingApps.isEmpty() || !mChangingContainers.isEmpty()) { pw.println(); if (mOpeningApps.size() > 0) { pw.print(" mOpeningApps="); pw.println(mOpeningApps); } if (mClosingApps.size() > 0) { pw.print(" mClosingApps="); pw.println(mClosingApps); } if (mChangingContainers.size() > 0) { pw.print(" mChangingApps="); pw.println(mChangingContainers); } } mUnknownAppVisibilityController.dump(pw, " "); } Loading
services/core/java/com/android/server/wm/Task.java +1 −1 Original line number Diff line number Diff line Loading @@ -2028,7 +2028,7 @@ class Task extends TaskFragment { } if (shouldStartChangeTransition(prevWinMode, mTmpPrevBounds)) { initializeChangeTransition(mTmpPrevBounds); mTransitionController.collectVisibleChange(this); } // If the configuration supports persistent bounds (eg. Freeform), keep track of the Loading