diff options
| author | 2020-06-17 07:04:33 +0000 | |
|---|---|---|
| committer | 2020-06-17 07:04:33 +0000 | |
| commit | 126e671343e5a44b11f4654cc692af096df83d43 (patch) | |
| tree | 26eb217d5891ba3f2b2a2c381bf29f231a352838 | |
| parent | 36806fa8222d9b6012b2eab5241bef8451088bb5 (diff) | |
| parent | 83754537f582e7096091d3bf40464a734b490194 (diff) | |
Merge "Exclude translation caused by surface insets from the matrix" into rvc-dev
| -rw-r--r-- | services/core/java/com/android/server/wm/WindowState.java | 9 | ||||
| -rw-r--r-- | services/tests/wmtests/src/com/android/server/wm/WindowStateTests.java | 1 |
2 files changed, 6 insertions, 4 deletions
diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java index 3532edf302c4..8fb98624899e 100644 --- a/services/core/java/com/android/server/wm/WindowState.java +++ b/services/core/java/com/android/server/wm/WindowState.java @@ -5158,17 +5158,18 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP float9[Matrix.MSKEW_Y] = mWinAnimator.mDtDx; float9[Matrix.MSKEW_X] = mWinAnimator.mDtDy; float9[Matrix.MSCALE_Y] = mWinAnimator.mDsDy; - int x = mSurfacePosition.x; - int y = mSurfacePosition.y; + transformSurfaceInsetsPosition(mTmpPoint, mAttrs.surfaceInsets); + int x = mSurfacePosition.x + mTmpPoint.x; + int y = mSurfacePosition.y + mTmpPoint.y; // We might be on a display which has been re-parented to a view in another window, so here // computes the global location of our display. DisplayContent dc = getDisplayContent(); while (dc != null && dc.getParentWindow() != null) { final WindowState displayParent = dc.getParentWindow(); - x += displayParent.mWindowFrames.mFrame.left - displayParent.mAttrs.surfaceInsets.left + x += displayParent.mWindowFrames.mFrame.left + (dc.getLocationInParentWindow().x * displayParent.mGlobalScale + 0.5f); - y += displayParent.mWindowFrames.mFrame.top - displayParent.mAttrs.surfaceInsets.top + y += displayParent.mWindowFrames.mFrame.top + (dc.getLocationInParentWindow().y * displayParent.mGlobalScale + 0.5f); dc = displayParent.getDisplayContent(); } diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowStateTests.java b/services/tests/wmtests/src/com/android/server/wm/WindowStateTests.java index b51784d8d6e5..0d26e4417ed9 100644 --- a/services/tests/wmtests/src/com/android/server/wm/WindowStateTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/WindowStateTests.java @@ -646,6 +646,7 @@ public class WindowStateTests extends WindowTestsBase { final WindowState win1 = createWindow(null, TYPE_APPLICATION, dc, "win1"); win1.mHasSurface = true; win1.mSurfaceControl = mock(SurfaceControl.class); + win1.mAttrs.surfaceInsets.set(1, 2, 3, 4); win1.getFrameLw().offsetTo(WINDOW_OFFSET, 0); win1.updateSurfacePosition(t); win1.getTransformationMatrix(values, matrix); |