Loading services/core/java/com/android/server/wm/AppWindowToken.java +8 −5 Original line number Diff line number Diff line Loading @@ -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); } } Loading Loading
services/core/java/com/android/server/wm/AppWindowToken.java +8 −5 Original line number Diff line number Diff line Loading @@ -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); } } Loading