summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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);