From ef364c5a555f0ff2ed307ab544c99476745b5758 Mon Sep 17 00:00:00 2001 From: Jackal Guo Date: Fri, 14 Feb 2020 15:38:39 +0800 Subject: [PATCH] Use boundsOnScreen to offset the translate ScreenRect is position in current window. However, it results in the incorrect bounds if the window isn't from (0, 0). We need to update it with bounds on screen instead. Bug: 149539748 Test: a11y CTS & unit tests Change-Id: I3cb07656a2c87e5f4fd1cba78463b1135c959bd4 --- core/java/android/view/SurfaceView.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core/java/android/view/SurfaceView.java b/core/java/android/view/SurfaceView.java index 47ffd3e2714c8..5566e0e4292ee 100644 --- a/core/java/android/view/SurfaceView.java +++ b/core/java/android/view/SurfaceView.java @@ -1643,8 +1643,9 @@ public class SurfaceView extends View implements ViewRootImpl.SurfaceChangedCall } private void updateScreenMatrixForEmbeddedHierarchy() { + getBoundsOnScreen(mTmpRect, true); mTmpMatrix.reset(); - mTmpMatrix.setTranslate(mScreenRect.left, mScreenRect.top); + mTmpMatrix.setTranslate(mTmpRect.left, mTmpRect.top); mTmpMatrix.postScale(mScreenRect.width() / (float) mSurfaceWidth, mScreenRect.height() / (float) mSurfaceHeight);