diff options
| author | 2024-04-19 12:21:44 +0000 | |
|---|---|---|
| committer | 2024-04-19 12:21:44 +0000 | |
| commit | 144bae3f34a7b91ac7c4be023c745dd658e71ec6 (patch) | |
| tree | 84836f5a6af2be8bab8cb014a184307f64bfbc0f | |
| parent | 9ab5c649531f67cfe735bda059d79666eb34f2de (diff) | |
| parent | 85e026262f850a60dfd2f79e4447b8e30e4f5682 (diff) | |
Merge "Try fix Bundle#getParcelable error for relayout bundle" into main
| -rw-r--r-- | core/java/android/view/ViewRootImpl.java | 24 |
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); |