diff options
| -rw-r--r-- | core/java/android/view/ViewRootImpl.java | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java index 60d964e32f6f..d191ccdf95a3 100644 --- a/core/java/android/view/ViewRootImpl.java +++ b/core/java/android/view/ViewRootImpl.java @@ -8413,10 +8413,20 @@ public final class ViewRootImpl implements ViewParent, } } - if (mSurfaceControl.isValid() && !HardwareRenderer.isDrawingEnabled()) { - // When drawing is disabled the window layer won't have a valid buffer. - // Set a window crop so input can get delivered to the window. - mTransaction.setWindowCrop(mSurfaceControl, mSurfaceSize.x, mSurfaceSize.y).apply(); + if (mSurfaceControl.isValid()) { + if (mPendingDragResizing && !mSurfaceSize.equals( + mWinFrameInScreen.width(), mWinFrameInScreen.height())) { + // During drag-resize, a single fullscreen-sized surface is reused for optimization. + // Crop to the content size instead of the surface size to avoid exposing garbage + // content that is still on the surface from previous re-layouts (e.g. when + // resizing to a larger size). + mTransaction.setWindowCrop(mSurfaceControl, + mWinFrameInScreen.width(), mWinFrameInScreen.height()); + } else if (!HardwareRenderer.isDrawingEnabled()) { + // When drawing is disabled the window layer won't have a valid buffer. + // Set a window crop so input can get delivered to the window. + mTransaction.setWindowCrop(mSurfaceControl, mSurfaceSize.x, mSurfaceSize.y).apply(); + } } mLastTransformHint = transformHint; |