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

Commit 1bccabf3 authored by Robert Carr's avatar Robert Carr
Browse files

Fix ViewRoot inset adjustment after initial setup.

If the insets change, "mWidth/mHeight" won't change
as it's based on the window frame (not the surface size),
we need to track when the insets change and call
HardwareRenderer.setup with the new values.

Bug: 28257246
Bug: 28368990
Change-Id: Ida304b57c4671d010d1cf7b370674c9453841c97
parent fa255f6e
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -389,6 +389,8 @@ public final class ViewRootImpl implements ViewParent,
    /** Set to true once doDie() has been called. */
    private boolean mRemoved;

    private boolean mNeedsHwRendererSetup;

    /**
     * Consistency verifier for debugging purposes.
     */
@@ -915,6 +917,11 @@ public final class ViewRootImpl implements ViewParent,
                mWindowAttributes.surfaceInsets.set(
                        oldInsetLeft, oldInsetTop, oldInsetRight, oldInsetBottom);
                mWindowAttributes.hasManualSurfaceInsets = oldHasManualSurfaceInsets;
            } else if (mWindowAttributes.surfaceInsets.left != oldInsetLeft
                    || mWindowAttributes.surfaceInsets.top != oldInsetTop
                    || mWindowAttributes.surfaceInsets.right != oldInsetRight
                    || mWindowAttributes.surfaceInsets.bottom != oldInsetBottom) {
                mNeedsHwRendererSetup = true;
            }

            applyKeepScreenOnFlag(mWindowAttributes);
@@ -1959,9 +1966,11 @@ public final class ViewRootImpl implements ViewParent,
            if (hardwareRenderer != null && hardwareRenderer.isEnabled()) {
                if (hwInitialized
                        || mWidth != hardwareRenderer.getWidth()
                        || mHeight != hardwareRenderer.getHeight()) {
                        || mHeight != hardwareRenderer.getHeight()
                        || mNeedsHwRendererSetup) {
                    hardwareRenderer.setup(mWidth, mHeight, mAttachInfo,
                            mWindowAttributes.surfaceInsets);
                    mNeedsHwRendererSetup = false;
                }
            }