diff options
| author | 2022-07-14 18:07:25 +0000 | |
|---|---|---|
| committer | 2022-07-14 18:07:25 +0000 | |
| commit | 66fe0ea95d4ed44c8463c738c41e88537895eed5 (patch) | |
| tree | fe45483493014f96150610b70b3e1c02647bd2d3 | |
| parent | d1d2110a4ae9758cf293e3e72ec6a5eb75ec6686 (diff) | |
| parent | 463a8e9debae98a1a5540c740a4e1a77c3cb5420 (diff) | |
Merge "Don't add insets when a container is detached" into tm-qpr-dev am: 82a9156b14 am: 463a8e9deb
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/19246352
Change-Id: I9da5b39ee58f5595b215ea87809bbdb39a1bba58
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
| -rw-r--r-- | services/core/java/com/android/server/wm/WindowContainer.java | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/wm/WindowContainer.java b/services/core/java/com/android/server/wm/WindowContainer.java index b810d9440b1d..bce131b6700b 100644 --- a/services/core/java/com/android/server/wm/WindowContainer.java +++ b/services/core/java/com/android/server/wm/WindowContainer.java @@ -429,6 +429,13 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer< if (insetsTypes == null || insetsTypes.length == 0) { throw new IllegalArgumentException("Insets type not specified."); } + if (mDisplayContent == null) { + // This is possible this container is detached when WM shell is responding to a previous + // request. WM shell will be updated when this container is attached again and the + // insets need to be updated. + Slog.w(TAG, "Can't add local rect insets source provider when detached. " + this); + return; + } if (mLocalInsetsSourceProviders == null) { mLocalInsetsSourceProviders = new SparseArray<>(); } @@ -1014,6 +1021,9 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer< if (dc != null && dc != this) { dc.getPendingTransaction().merge(mPendingTransaction); } + if (dc != this && mLocalInsetsSourceProviders != null) { + mLocalInsetsSourceProviders.clear(); + } for (int i = mChildren.size() - 1; i >= 0; --i) { final WindowContainer child = mChildren.get(i); child.onDisplayChanged(dc); |