Avoid potential recursion of surface placement
WindowSurfacePlacer#mInLayout can guard the case of calling RootWindowContainer#performSurfacePlacement recursively. But it requires the caller to use WindowSurfacePlacer instead of the inner method. Bug: 234840614 Bug: 237481770 Test: CtsWindowManagerDeviceTestCases Change-Id: Ie87646da2848cc988e3ea51644e86e2a88c2fd3a
This commit is contained in:
@@ -779,6 +779,10 @@ class RootWindowContainer extends WindowContainer<DisplayContent>
|
||||
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 {
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user