From 1bccabf3c443afb17531f863beda10d626667d1f Mon Sep 17 00:00:00 2001 From: Robert Carr Date: Thu, 28 Apr 2016 13:27:08 -0700 Subject: [PATCH] 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 --- core/java/android/view/ViewRootImpl.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java index a0384f2601d30..edf05ba5fc33c 100644 --- a/core/java/android/view/ViewRootImpl.java +++ b/core/java/android/view/ViewRootImpl.java @@ -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; } }