diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java index 58819144949e4..1ec90b0c0a50c 100644 --- a/services/core/java/com/android/server/wm/WindowState.java +++ b/services/core/java/com/android/server/wm/WindowState.java @@ -2036,6 +2036,11 @@ class WindowState extends WindowContainer implements WindowManagerP if (dc == null) { return; } + + // If layout is currently deferred, we want to hold of with updating the layers. + if (mService.mWindowPlacerLocked.isLayoutDeferred()) { + return; + } final DimLayer.DimLayerUser dimLayerUser = getDimLayerUser(); if (dimLayerUser != null && dc.mDimLayerController.isDimming(dimLayerUser, mWinAnimator)) { // Force an animation pass just to update the mDimLayer layer. diff --git a/services/core/java/com/android/server/wm/WindowSurfacePlacer.java b/services/core/java/com/android/server/wm/WindowSurfacePlacer.java index 690989251f618..581b0447dafc3 100644 --- a/services/core/java/com/android/server/wm/WindowSurfacePlacer.java +++ b/services/core/java/com/android/server/wm/WindowSurfacePlacer.java @@ -127,6 +127,10 @@ class WindowSurfacePlacer { } } + boolean isLayoutDeferred() { + return mDeferDepth > 0; + } + final void performSurfacePlacement() { performSurfacePlacement(false /* force */); }