From 7563f05e57688fd9a6fc3e00e1a5f9e80da5127b Mon Sep 17 00:00:00 2001 From: Issei Suzuki Date: Mon, 29 Jun 2020 12:20:41 +0200 Subject: [PATCH] Batch updating visibility in TaskDisplayArea The lockscreen state could be updated too early while ensuring pinned stack visibilities, so sleep token was applied and made the activities to STOPPED state. Test: manual Bug: 159623845 Change-Id: I62d72b93cd529b5a3c3fb22292d888ff0038179f --- .../java/com/android/server/wm/TaskDisplayArea.java | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/services/core/java/com/android/server/wm/TaskDisplayArea.java b/services/core/java/com/android/server/wm/TaskDisplayArea.java index 3360951a8f3fc..205a8d2aeeac0 100644 --- a/services/core/java/com/android/server/wm/TaskDisplayArea.java +++ b/services/core/java/com/android/server/wm/TaskDisplayArea.java @@ -1746,10 +1746,15 @@ final class TaskDisplayArea extends DisplayArea { void ensureActivitiesVisible(ActivityRecord starting, int configChanges, boolean preserveWindows, boolean notifyClients) { - for (int stackNdx = getStackCount() - 1; stackNdx >= 0; --stackNdx) { - final ActivityStack stack = getStackAt(stackNdx); - stack.ensureActivitiesVisible(starting, configChanges, preserveWindows, - notifyClients); + mAtmService.mStackSupervisor.beginActivityVisibilityUpdate(); + try { + for (int stackNdx = getStackCount() - 1; stackNdx >= 0; --stackNdx) { + final ActivityStack stack = getStackAt(stackNdx); + stack.ensureActivitiesVisible(starting, configChanges, preserveWindows, + notifyClients); + } + } finally { + mAtmService.mStackSupervisor.endActivityVisibilityUpdate(); } }