Merge "Ensure arraylist index is montonically decreasing" into lmp-mr1-dev

This commit is contained in:
Craig Mautner
2014-11-20 20:53:35 +00:00
committed by Android (Google) Code Review

View File

@@ -254,15 +254,18 @@ class AppWindowToken extends WindowToken {
@Override
void removeAllWindows() {
int winNdx;
while ((winNdx = allAppWindows.size()) > 0) {
WindowState win = allAppWindows.get(winNdx - 1);
for (int winNdx = allAppWindows.size() - 1; winNdx >= 0;
// removeWindowLocked at bottom of loop may remove multiple entries from
// allAppWindows if the window to be removed has child windows. It also may
// not remove any windows from allAppWindows at all if win is exiting and
// currently animating away. This ensures that winNdx is monotonically decreasing
// and never beyond allAppWindows bounds.
winNdx = Math.min(winNdx - 1, allAppWindows.size() - 1)) {
WindowState win = allAppWindows.get(winNdx);
if (WindowManagerService.DEBUG_WINDOW_MOVEMENT) {
Slog.w(WindowManagerService.TAG, "removeAllWindows: removing win=" + win);
}
// {@link WindowManagerService.removeWindowLocked} may remove multiple entries from
// {@link #allAppWindows} if the window to be removed has child windows.
win.mService.removeWindowLocked(win.mSession, win);
}
}