diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index 59ddab08c4c88..0b80c5a8f79e8 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -8690,19 +8690,21 @@ public class WindowManagerService extends IWindowManager.Stub case SEAMLESS_ROTATION_TIMEOUT: { // Rotation only supported on primary display. // TODO(multi-display) - final DisplayContent displayContent = getDefaultDisplayContentLocked(); - final WindowList windows = displayContent.getWindowList(); - boolean layoutNeeded = false; - for (int i = windows.size() - 1; i >= 0; i--) { - WindowState w = windows.get(i); - if (w.mSeamlesslyRotated) { - layoutNeeded = true; - w.setDisplayLayoutNeeded(); + synchronized(mWindowMap) { + final DisplayContent displayContent = getDefaultDisplayContentLocked(); + final WindowList windows = displayContent.getWindowList(); + boolean layoutNeeded = false; + for (int i = windows.size() - 1; i >= 0; i--) { + WindowState w = windows.get(i); + if (w.mSeamlesslyRotated) { + layoutNeeded = true; + w.setDisplayLayoutNeeded(); + } + w.mSeamlesslyRotated = false; + } + if (layoutNeeded) { + mWindowPlacerLocked.performSurfacePlacement(); } - w.mSeamlesslyRotated = false; - } - if (layoutNeeded) { - mWindowPlacerLocked.performSurfacePlacement(); } } break;