Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 71f2c314 authored by Chong Zhang's avatar Chong Zhang
Browse files

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
parent 02435d24
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -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