summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Riddle Hsu <riddlehsu@google.com> 2024-06-14 07:31:08 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2024-06-14 07:31:08 +0000
commit1d4f17a0d440eb8554cf2be5c6945c652fbc0c09 (patch)
treef2c04e4d1cb4ac9f3615a61e4756c9a26d043dbb
parent5d2791d7ebfacc5ecad69e26b6a0bd863919a7dd (diff)
parentcc946a4d3257e10e9d1e6ab0f1cf8a5ff0326b61 (diff)
Merge "Revert "Reduce unnecessary visibility update after resumed"" into main
-rw-r--r--services/core/java/com/android/server/wm/ActivityRecord.java5
-rw-r--r--services/core/java/com/android/server/wm/ActivityTaskSupervisor.java15
-rw-r--r--services/core/java/com/android/server/wm/RootWindowContainer.java2
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);
}
}