diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java index b107ff8a6b7b8..4b96791912b62 100644 --- a/services/core/java/com/android/server/wm/ActivityRecord.java +++ b/services/core/java/com/android/server/wm/ActivityRecord.java @@ -4938,11 +4938,10 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A // dispatchTaskInfoChangedIfNeeded() right after ActivityRecord#setVisibility() can report // the stale visible state, because the state will be updated after the app transition. // So tries to report the actual visible state again where the state is changed. - if (!mTaskSupervisor.inActivityVisibilityUpdate()) { - final Task task = getOrganizedTask(); - if (task != null) { - task.dispatchTaskInfoChangedIfNeeded(false /* force */); - } + Task task = getOrganizedTask(); + while (task != null) { + task.dispatchTaskInfoChangedIfNeeded(false /* force */); + task = task.getParent().asTask(); } ProtoLog.v(WM_DEBUG_APP_TRANSITIONS, "commitVisibility: %s: visible=%b mVisibleRequested=%b", this, diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java index 3f6708d1843c0..c5362d38c6133 100644 --- a/services/core/java/com/android/server/wm/Task.java +++ b/services/core/java/com/android/server/wm/Task.java @@ -4809,10 +4809,6 @@ class Task extends TaskFragment { notifyClients); }, true /* traverseTopToBottom */); - // Notify WM shell that task visibilities may have changed - forAllTasks(task -> task.dispatchTaskInfoChangedIfNeeded(/* force */ false), - true /* traverseTopToBottom */); - if (mTranslucentActivityWaiting != null && mUndrawnActivitiesBelowTopTranslucent.isEmpty()) { // Nothing is getting drawn or everything was already visible, don't wait for