diff --git a/services/core/java/com/android/server/wm/DisplayPolicy.java b/services/core/java/com/android/server/wm/DisplayPolicy.java index 452a23fbf0d47..566ed60765265 100644 --- a/services/core/java/com/android/server/wm/DisplayPolicy.java +++ b/services/core/java/com/android/server/wm/DisplayPolicy.java @@ -1810,14 +1810,10 @@ public class DisplayPolicy { /** * Called when the resource overlays change. */ - void onOverlayChanged() { + public void onOverlayChangedLw() { updateCurrentUserResources(); - // Update the latest display size, cutout. - mDisplayContent.updateDisplayInfo(); - // The height of status bar needs to update in case display cutout is changed. onConfigurationChanged(); - // The height of status bar can affect screen size configuration. - mDisplayContent.reconfigureDisplayLocked(); + mSystemGestures.onConfigurationChanged(); } /** diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index d78fdaa180837..500af8ec0e01a 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -6976,17 +6976,13 @@ public class WindowManagerService extends IWindowManager.Stub } public void onOverlayChanged() { - // Post to display thread so it can get the latest display info. - mH.post(() -> { - synchronized (mGlobalLock) { - mAtmService.deferWindowLayout(); - try { - mRoot.forAllDisplays(dc -> dc.getDisplayPolicy().onOverlayChanged()); - } finally { - mAtmService.continueWindowLayout(); - } - } - }); + synchronized (mGlobalLock) { + mRoot.forAllDisplays(displayContent -> { + displayContent.getDisplayPolicy().onOverlayChangedLw(); + displayContent.updateDisplayInfo(); + }); + requestTraversal(); + } } @Override