Merge "Copy child window list when destroying surface"

This commit is contained in:
Jorim Jaggi
2018-01-08 12:02:07 +00:00
committed by Android (Google) Code Review
2 changed files with 7 additions and 6 deletions

View File

@@ -649,8 +649,7 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree
boolean destroyedSomething = false;
// Copying to a different list as multiple children can be removed.
// TODO: Not sure why this is needed.
final LinkedList<WindowState> children = new LinkedList<>(mChildren);
final ArrayList<WindowState> children = new ArrayList<>(mChildren);
for (int i = children.size() - 1; i >= 0; i--) {
final WindowState win = children.get(i);
destroyedSomething |= win.destroySurface(cleanupOnResume, mAppStopped);

View File

@@ -2664,8 +2664,11 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
boolean destroySurface(boolean cleanupOnResume, boolean appStopped) {
boolean destroyedSomething = false;
for (int i = mChildren.size() - 1; i >= 0; --i) {
final WindowState c = mChildren.get(i);
// Copying to a different list as multiple children can be removed.
final ArrayList<WindowState> childWindows = new ArrayList<>(mChildren);
for (int i = childWindows.size() - 1; i >= 0; --i) {
final WindowState c = childWindows.get(i);
destroyedSomething |= c.destroySurface(cleanupOnResume, appStopped);
}
@@ -3923,8 +3926,7 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
if (!mChildren.isEmpty()) {
// Copying to a different list as multiple children can be removed.
// TODO: Not sure if we really need to copy this into a different list.
final LinkedList<WindowState> childWindows = new LinkedList(mChildren);
final ArrayList<WindowState> childWindows = new ArrayList<>(mChildren);
for (int i = childWindows.size() - 1; i >= 0; i--) {
childWindows.get(i).onExitAnimationDone();
}