diff options
| author | 2022-08-03 12:31:28 +0000 | |
|---|---|---|
| committer | 2022-08-03 12:31:28 +0000 | |
| commit | 3ad540478fed104dbbc5ceb8a57cd476dd97b41a (patch) | |
| tree | 5731c7e8b1962ac9934fdba73451ea4017bbd82a | |
| parent | 560e645f3a0bd647998e43113fb0abefa4dfcbb8 (diff) | |
| parent | eb8882f09b4f38d691ae87a4f04f628c52f30436 (diff) | |
Merge "Get the latest display info for overlay change" into tm-qpr-dev
| -rw-r--r-- | services/core/java/com/android/server/wm/DisplayPolicy.java | 4 | ||||
| -rw-r--r-- | services/core/java/com/android/server/wm/WindowManagerService.java | 15 |
2 files changed, 11 insertions, 8 deletions
diff --git a/services/core/java/com/android/server/wm/DisplayPolicy.java b/services/core/java/com/android/server/wm/DisplayPolicy.java index 7b4189b3291d..25d187fbf86f 100644 --- a/services/core/java/com/android/server/wm/DisplayPolicy.java +++ b/services/core/java/com/android/server/wm/DisplayPolicy.java @@ -1900,8 +1900,10 @@ public class DisplayPolicy { /** * Called when the resource overlays change. */ - public void onOverlayChangedLw() { + void onOverlayChanged() { updateCurrentUserResources(); + // Update the latest display size, cutout. + mDisplayContent.updateDisplayInfo(); onConfigurationChanged(); 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 08c473226837..296390a57bcc 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -7046,13 +7046,14 @@ public class WindowManagerService extends IWindowManager.Stub } public void onOverlayChanged() { - synchronized (mGlobalLock) { - mRoot.forAllDisplays(displayContent -> { - displayContent.getDisplayPolicy().onOverlayChangedLw(); - displayContent.updateDisplayInfo(); - }); - requestTraversal(); - } + // Post to display thread so it can get the latest display info. + mH.post(() -> { + synchronized (mGlobalLock) { + mAtmService.deferWindowLayout(); + mRoot.forAllDisplays(dc -> dc.getDisplayPolicy().onOverlayChanged()); + mAtmService.continueWindowLayout(); + } + }); } @Override |