diff options
| author | 2024-01-31 22:03:57 +0000 | |
|---|---|---|
| committer | 2024-01-31 22:03:57 +0000 | |
| commit | 1ef58e0103f591936dbf904e5dfc77bfa746508f (patch) | |
| tree | b1e83523f551e0cdd1c7a8f28487dc740d458414 | |
| parent | e21e47ac8c44f49e65751f1efc83b0bf8226c3b2 (diff) | |
| parent | aa441f5ebff7a8670a542b907c196fc9758afbde (diff) | |
Merge "Remove the scaling code" into main
| -rw-r--r-- | libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipController.java | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipController.java index 238e6b5bf2af..c5a01025dcdd 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipController.java @@ -797,14 +797,20 @@ public class PipController implements PipTransitionController.PipTransitionCallb mPipBoundsAlgorithm.getMovementBounds(postChangeBounds), mPipBoundsState.getStashedState()); - updateDisplayLayout.run(); + // Scale PiP on density dpi change, so it appears to be the same size physically. + final boolean densityDpiChanged = + mPipDisplayLayoutState.getDisplayLayout().densityDpi() != 0 + && (mPipDisplayLayoutState.getDisplayLayout().densityDpi() + != layout.densityDpi()); + if (densityDpiChanged) { + final float scale = (float) layout.densityDpi() + / mPipDisplayLayoutState.getDisplayLayout().densityDpi(); + postChangeBounds.set(0, 0, + (int) (postChangeBounds.width() * scale), + (int) (postChangeBounds.height() * scale)); + } - // Resize the PiP bounds to be at the same scale relative to the new size spec. For - // example, if PiP was resized to 90% of the maximum size on the previous layout, - // make sure it is 90% of the new maximum size spec. - postChangeBounds.set(0, 0, - (int) (mPipBoundsState.getMaxSize().x * mPipBoundsState.getBoundsScale()), - (int) (mPipBoundsState.getMaxSize().y * mPipBoundsState.getBoundsScale())); + updateDisplayLayout.run(); // Calculate the PiP bounds in the new orientation based on same fraction along the // rotated movement bounds. @@ -821,10 +827,6 @@ public class PipController implements PipTransitionController.PipTransitionCallb mPipBoundsState.setHasUserResizedPip(true); mTouchHandler.setUserResizeBounds(postChangeBounds); - final boolean densityDpiChanged = - mPipDisplayLayoutState.getDisplayLayout().densityDpi() != 0 - && (mPipDisplayLayoutState.getDisplayLayout().densityDpi() - != layout.densityDpi()); if (densityDpiChanged) { // Using PipMotionHelper#movePip directly here may cause race condition since // the app content in PiP mode may or may not be updated for the new density dpi. |