summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Chris Li <lihongyu@google.com> 2024-04-19 12:21:44 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2024-04-19 12:21:44 +0000
commit144bae3f34a7b91ac7c4be023c745dd658e71ec6 (patch)
tree84836f5a6af2be8bab8cb014a184307f64bfbc0f
parent9ab5c649531f67cfe735bda059d79666eb34f2de (diff)
parent85e026262f850a60dfd2f79e4447b8e30e4f5682 (diff)
Merge "Try fix Bundle#getParcelable error for relayout bundle" into main
-rw-r--r--core/java/android/view/ViewRootImpl.java24
1 files changed, 15 insertions, 9 deletions
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java
index 8d55777a2b8e..a8619ab4539c 100644
--- a/core/java/android/view/ViewRootImpl.java
+++ b/core/java/android/view/ViewRootImpl.java
@@ -9044,20 +9044,26 @@ public final class ViewRootImpl implements ViewParent,
mTempInsets, mTempControls, mRelayoutBundle);
mRelayoutRequested = true;
- final int maybeSyncSeqId = mRelayoutBundle.getInt(
- IWindowSession.KEY_RELAYOUT_BUNDLE_SEQID);
- if (maybeSyncSeqId > 0) {
- mSyncSeqId = maybeSyncSeqId;
- }
if (activityWindowInfoFlag() && mPendingActivityWindowInfo != null) {
- final ActivityWindowInfo outInfo = mRelayoutBundle.getParcelable(
- IWindowSession.KEY_RELAYOUT_BUNDLE_ACTIVITY_WINDOW_INFO,
- ActivityWindowInfo.class);
+ ActivityWindowInfo outInfo = null;
+ try {
+ outInfo = mRelayoutBundle.getParcelable(
+ IWindowSession.KEY_RELAYOUT_BUNDLE_ACTIVITY_WINDOW_INFO,
+ ActivityWindowInfo.class);
+ mRelayoutBundle.remove(IWindowSession.KEY_RELAYOUT_BUNDLE_ACTIVITY_WINDOW_INFO);
+ } catch (IllegalStateException e) {
+ Log.e(TAG, "Failed to get ActivityWindowInfo from relayout Bundle", e);
+ }
if (outInfo != null) {
mPendingActivityWindowInfo.set(outInfo);
}
}
- mRelayoutBundle.clear();
+ final int maybeSyncSeqId = mRelayoutBundle.getInt(
+ IWindowSession.KEY_RELAYOUT_BUNDLE_SEQID);
+ if (maybeSyncSeqId > 0) {
+ mSyncSeqId = maybeSyncSeqId;
+ }
+
mWinFrameInScreen.set(mTmpFrames.frame);
if (mTranslator != null) {
mTranslator.translateRectInScreenToAppWindow(mTmpFrames.frame);