diff --git a/services/core/java/com/android/server/wm/RootWindowContainer.java b/services/core/java/com/android/server/wm/RootWindowContainer.java index db730e0cb3689..e49870898f0f2 100644 --- a/services/core/java/com/android/server/wm/RootWindowContainer.java +++ b/services/core/java/com/android/server/wm/RootWindowContainer.java @@ -779,6 +779,10 @@ class RootWindowContainer extends WindowContainer return leakedSurface || killedApps; } + /** + * This method should only be called from {@link WindowSurfacePlacer}. Otherwise the recursion + * check and {@link WindowSurfacePlacer#isInLayout()} won't take effect. + */ void performSurfacePlacement() { Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "performSurfacePlacement"); try { diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index d31dfeed389d5..1f81cf313ac24 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -5611,7 +5611,7 @@ public class WindowManagerService extends IWindowManager.Stub mWindowsInsetsChanged = 0; // We need to update resizing windows and dispatch the new insets state // to them. - mRoot.performSurfacePlacement(); + mWindowPlacerLocked.performSurfacePlacement(); } } break;