/**
* Positions windows and their surfaces.
*
* It sets positions of windows by calculating their frames and then applies this by positioning
* surfaces according to these frames. Z layer is still assigned withing WindowManagerService.
*/
class WindowSurfacePlacer {
}
there is only one instance of WindowSurfacePlacer in SystemServer process.
performSurfacePlacementLoop() invoke RootWindowContainer#performSurfacePlacement()
who calls WindowSurfacePlacer#requestTraversal:
- DisplayContent#executeAppTransition()
- DisplayContent#removeImmediately
- WindowState#destroySurface
- WindowManagerService#requestTraversal
who calls WindowManagerService#requestTraversal:
- DisplayManagerService#scheduleTraversalLocked
- com.android.server.wm.WindowState#onExitAnimationDone
- com.android.server.wm.WindowState#removeIfPossible(boolean)
- com.android.server.wm.DisplayContent#onDisplayChanged()
call hierarchy:
WindowSurfacePlacer#requestTraversal
WindowSurfacePlacer#performSurfacePlacementLoop
RootWindowContainer#performSurfacePlacement
RootWindowContainer#performSurfacePlacementNoTrace
RootWindowContainer#checkAppTransitionReady
RootWindowContainer#handleAppTransitionReady