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

Commit 76fdbb72 authored by Adam Powell's avatar Adam Powell
Browse files

Fix layout issue after insets changed

Fix a regression where a change in insets would forceLayout on the
view hierarchy but not run the measure/layout as a result. This would
cause layout requests to become stalled until a window-level relayout
event.

Bug 29634368

Change-Id: Ia3f32f5891c8b32c06c13f95ebd0572233572b04
parent 9c0c3d8d
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -1723,7 +1723,7 @@ public final class ViewRootImpl implements ViewParent,
            }

            boolean hwInitialized = false;
            boolean contentInsetsChanged = false;
            boolean framesChanged = false;
            boolean hadSurface = mSurface.isValid();

            try {
@@ -1763,7 +1763,7 @@ public final class ViewRootImpl implements ViewParent,

                final boolean overscanInsetsChanged = !mPendingOverscanInsets.equals(
                        mAttachInfo.mOverscanInsets);
                contentInsetsChanged = !mPendingContentInsets.equals(
                boolean contentInsetsChanged = !mPendingContentInsets.equals(
                        mAttachInfo.mContentInsets);
                final boolean visibleInsetsChanged = !mPendingVisibleInsets.equals(
                        mAttachInfo.mVisibleInsets);
@@ -1817,7 +1817,7 @@ public final class ViewRootImpl implements ViewParent,
                // 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
                framesChanged = overscanInsetsChanged
                        || contentInsetsChanged
                        || stableInsetsChanged
                        || visibleInsetsChanged
@@ -2009,7 +2009,7 @@ public final class ViewRootImpl implements ViewParent,
                boolean focusChangedDueToTouchMode = ensureTouchModeLocally(
                        (relayoutResult&WindowManagerGlobal.RELAYOUT_RES_IN_TOUCH_MODE) != 0);
                if (focusChangedDueToTouchMode || mWidth != host.getMeasuredWidth()
                        || mHeight != host.getMeasuredHeight() || contentInsetsChanged ||
                        || mHeight != host.getMeasuredHeight() || framesChanged ||
                        updatedConfiguration) {
                    int childWidthMeasureSpec = getRootMeasureSpec(mWidth, lp.width);
                    int childHeightMeasureSpec = getRootMeasureSpec(mHeight, lp.height);
@@ -2018,7 +2018,7 @@ public final class ViewRootImpl implements ViewParent,
                            + mWidth + " measuredWidth=" + host.getMeasuredWidth()
                            + " mHeight=" + mHeight
                            + " measuredHeight=" + host.getMeasuredHeight()
                            + " coveredInsetsChanged=" + contentInsetsChanged);
                            + " framesChanged=" + framesChanged);

                     // Ask host how big it wants to be
                    performMeasure(childWidthMeasureSpec, childHeightMeasureSpec);