diff options
| author | 2024-06-14 07:31:08 +0000 | |
|---|---|---|
| committer | 2024-06-14 07:31:08 +0000 | |
| commit | 1d4f17a0d440eb8554cf2be5c6945c652fbc0c09 (patch) | |
| tree | f2c04e4d1cb4ac9f3615a61e4756c9a26d043dbb | |
| parent | 5d2791d7ebfacc5ecad69e26b6a0bd863919a7dd (diff) | |
| parent | cc946a4d3257e10e9d1e6ab0f1cf8a5ff0326b61 (diff) | |
Merge "Revert "Reduce unnecessary visibility update after resumed"" into main
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);          }      } |