Do a forceLayout if pending insets is changed after relayout window
We might have a pending MSG_RESIZED_REPORT, but if it's executed after relayoutWindow, mPendingInsets will already be the new value and it'll not forceLayout. So we need to forceLayout here to make sure the measure cache is cleared. bug: 29391054 Change-Id: I73793b1427b89e75700369ec3b37053a6a732f0d
This commit is contained in:
@@ -1814,6 +1814,19 @@ public final class ViewRootImpl implements ViewParent,
|
||||
+ mAttachInfo.mVisibleInsets);
|
||||
}
|
||||
|
||||
// If any of the insets changed, do a forceLayout on the view so that the
|
||||
// measure cache is cleared. We might have a pending MSG_RESIZED_REPORT
|
||||
// that is supposed to take care of it, but since pending insets are
|
||||
// already modified here, it won't detect the frame change after this.
|
||||
final boolean framesChanged = overscanInsetsChanged
|
||||
|| contentInsetsChanged
|
||||
|| stableInsetsChanged
|
||||
|| visibleInsetsChanged
|
||||
|| outsetsChanged;
|
||||
if (mAdded && mView != null && framesChanged) {
|
||||
forceLayout(mView);
|
||||
}
|
||||
|
||||
if (!hadSurface) {
|
||||
if (mSurface.isValid()) {
|
||||
// If we are creating a new surface, then we need to
|
||||
|
||||
Reference in New Issue
Block a user