summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Riddle Hsu <riddlehsu@google.com> 2022-08-03 12:31:28 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2022-08-03 12:31:28 +0000
commit3ad540478fed104dbbc5ceb8a57cd476dd97b41a (patch)
tree5731c7e8b1962ac9934fdba73451ea4017bbd82a
parent560e645f3a0bd647998e43113fb0abefa4dfcbb8 (diff)
parenteb8882f09b4f38d691ae87a4f04f628c52f30436 (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.java4
-rw-r--r--services/core/java/com/android/server/wm/WindowManagerService.java15
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