diff options
3 files changed, 16 insertions, 6 deletions
diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java index ed867d1eb50f..9eb9222078fb 100644 --- a/services/core/java/com/android/server/wm/ActivityRecord.java +++ b/services/core/java/com/android/server/wm/ActivityRecord.java @@ -6562,10 +6562,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A // Schedule an idle timeout in case the app doesn't do it for us. mTaskSupervisor.scheduleIdleTimeout(this); - mTaskSupervisor.mStoppingActivities.remove(this); - if (getDisplayArea().allResumedActivitiesComplete()) { - mRootWindowContainer.executeAppTransitionForAllDisplay(); - } + mTaskSupervisor.reportResumedActivityLocked(this); resumeKeyDispatchingLocked(); final Task rootTask = getRootTask(); diff --git a/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java b/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java index b6e6991656f2..3867d2d229ea 100644 --- a/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java +++ b/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java @@ -2064,6 +2064,21 @@ public class ActivityTaskSupervisor implements RecentTasks.Callbacks { } } + boolean reportResumedActivityLocked(ActivityRecord r) { + // A resumed activity cannot be stopping. remove from list + mStoppingActivities.remove(r); + + final Task rootTask = r.getRootTask(); + if (rootTask.getDisplayArea().allResumedActivitiesComplete()) { + mRootWindowContainer.ensureActivitiesVisible(); + // Make sure activity & window visibility should be identical + // for all displays in this stage. + mRootWindowContainer.executeAppTransitionForAllDisplay(); + return true; + } + return false; + } + // Called when WindowManager has finished animating the launchingBehind activity to the back. private void handleLaunchTaskBehindCompleteLocked(ActivityRecord r) { final Task task = r.getTask(); diff --git a/services/core/java/com/android/server/wm/RootWindowContainer.java b/services/core/java/com/android/server/wm/RootWindowContainer.java index 54ba47eeb441..f5ab38f72b54 100644 --- a/services/core/java/com/android/server/wm/RootWindowContainer.java +++ b/services/core/java/com/android/server/wm/RootWindowContainer.java @@ -1905,7 +1905,6 @@ class RootWindowContainer extends WindowContainer<DisplayContent> // Don't do recursive work. return; } - Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "RWC_ensureActivitiesVisible"); mTaskSupervisor.beginActivityVisibilityUpdate(); try { // First the front root tasks. In case any are not fullscreen and are in front of home. @@ -1915,7 +1914,6 @@ class RootWindowContainer extends WindowContainer<DisplayContent> } } finally { mTaskSupervisor.endActivityVisibilityUpdate(); - Trace.traceEnd(TRACE_TAG_WINDOW_MANAGER); } } |