Fix bug on DC#ensureActivitiesVisible

There is a possibility that a certain DC does not perform
ensureActivitiesVisible since exception occurs on the binder thread.

If an exception occurs during its execution, the execution of the
finally statement is not conducted. From this point on, the DC doesn't
execute ensureActivitiesVisible forever.

Bug: 291175616
Change-Id: I042c15d3836f62a6c31e22d05023f4e61fb046d2
Signed-off-by: Hyeongseop Shim <hyeongseop.shim@samsung.corp-partner.google.com>
This commit is contained in:
Hyeongseop Shim
2023-07-17 19:01:30 +09:00
parent daf8d6234e
commit b33f0178ed
2 changed files with 2 additions and 3 deletions

View File

@@ -6302,9 +6302,9 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
// Don't do recursive work.
return;
}
mInEnsureActivitiesVisible = true;
mAtmService.mTaskSupervisor.beginActivityVisibilityUpdate();
try {
mInEnsureActivitiesVisible = true;
forAllRootTasks(rootTask -> {
rootTask.ensureActivitiesVisible(starting, configChanges, preserveWindows,
notifyClients);

View File

@@ -1833,9 +1833,8 @@ class RootWindowContainer extends WindowContainer<DisplayContent>
// Don't do recursive work.
return;
}
mTaskSupervisor.beginActivityVisibilityUpdate();
try {
mTaskSupervisor.beginActivityVisibilityUpdate();
// First the front root tasks. In case any are not fullscreen and are in front of home.
for (int displayNdx = getChildCount() - 1; displayNdx >= 0; --displayNdx) {
final DisplayContent display = getChildAt(displayNdx);