Loading services/core/java/com/android/server/wm/WindowState.java +5 −4 Original line number Diff line number Diff line Loading @@ -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(); } Loading services/tests/wmtests/src/com/android/server/wm/WindowStateTests.java +1 −0 Original line number Diff line number Diff line Loading @@ -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); Loading Loading
services/core/java/com/android/server/wm/WindowState.java +5 −4 Original line number Diff line number Diff line Loading @@ -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(); } Loading
services/tests/wmtests/src/com/android/server/wm/WindowStateTests.java +1 −0 Original line number Diff line number Diff line Loading @@ -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); Loading