diff --git a/services/core/java/com/android/server/wm/RootWindowContainer.java b/services/core/java/com/android/server/wm/RootWindowContainer.java index dfce40b874c05..5668dd0d82812 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 9d6e250e8a47e..f31c26757b094 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;