diff options
| author | 2021-06-22 10:15:40 -0400 | |
|---|---|---|
| committer | 2021-06-22 17:16:01 +0000 | |
| commit | 1c996ad2871db8737fbb21f98b84b237edcbbe69 (patch) | |
| tree | bed93b26259abcb03e570e199229e1824102213e | |
| parent | e1ae3b743e4e6630a52658a43d97166ce39e3398 (diff) | |
Fixes long screenshot landscape and split window bugs
Fixes incorrect view transform in ViewRenderer
The tranform was mapping to on-screen coordinates, where
in-window position is needed.
Bug: 183045126
Bug: 189289758
Bug: 189235588
Test: manual, long screenshot the bottom app in split window mode
Change-Id: Ibaa9987b229f9e8ec0a1002ee84d797ca6026fb9
| -rw-r--r-- | core/java/com/android/internal/view/ScrollCaptureViewSupport.java | 15 |
1 files changed, 5 insertions, 10 deletions
diff --git a/core/java/com/android/internal/view/ScrollCaptureViewSupport.java b/core/java/com/android/internal/view/ScrollCaptureViewSupport.java index 8aa2d57e8ea6..9e09006f608d 100644 --- a/core/java/com/android/internal/view/ScrollCaptureViewSupport.java +++ b/core/java/com/android/internal/view/ScrollCaptureViewSupport.java @@ -198,12 +198,9 @@ public class ScrollCaptureViewSupport<V extends View> implements ScrollCaptureCa private static final float LIGHT_RADIUS_DP = 800; private static final String TAG = "ViewRenderer"; - private HardwareRenderer mRenderer; - private RenderNode mCaptureRenderNode; - private final RectF mTempRectF = new RectF(); - private final Rect mSourceRect = new Rect(); + private final HardwareRenderer mRenderer; + private final RenderNode mCaptureRenderNode; private final Rect mTempRect = new Rect(); - private final Matrix mTempMatrix = new Matrix(); private final int[] mTempLocation = new int[2]; private long mLastRenderedSourceDrawingId = -1; private Surface mSurface; @@ -313,11 +310,9 @@ public class ScrollCaptureViewSupport<V extends View> implements ScrollCaptureCa } private void transformToRoot(View local, Rect localRect, Rect outRect) { - mTempMatrix.reset(); - local.transformMatrixToGlobal(mTempMatrix); - mTempRectF.set(localRect); - mTempMatrix.mapRect(mTempRectF); - mTempRectF.round(outRect); + local.getLocationInWindow(mTempLocation); + outRect.set(localRect); + outRect.offset(mTempLocation[0], mTempLocation[1]); } public void setColorMode(@ColorMode int colorMode) { |