Send source rect hint to Shell via stopSwipePipToHome

Launcher has calculated it, so shell side can use it directly to
avoid inconsistency.

Bug: 331315278
Test: Assume the target app support auto-pip and it doesn't draw
      under display cutout.
      E.g. LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES
      Enter PiP from 90 degrees to home with 0 degrees.
      The left side of pip should not flicker.
Change-Id: Id09efc8a30eeef14a031d9db2ab1e00b6f3034bc
This commit is contained in:
Riddle Hsu
2024-06-03 10:59:57 +08:00
parent 1b973c068d
commit 684ee34fe7
3 changed files with 8 additions and 3 deletions

View File

@@ -1614,7 +1614,8 @@ public abstract class AbsSwipeUpHandler<T extends RecentsViewContainer,
mSwipePipToHomeAnimator.getComponentName(),
mSwipePipToHomeAnimator.getDestinationBounds(),
mSwipePipToHomeAnimator.getContentOverlay(),
mSwipePipToHomeAnimator.getAppBounds());
mSwipePipToHomeAnimator.getAppBounds(),
mSwipePipToHomeAnimator.getSourceRectHint());
windowAnim = mSwipePipToHomeAnimators;
} else {

View File

@@ -683,11 +683,11 @@ public class SystemUiProxy implements ISystemUiProxy, NavHandle, SafeCloseable {
* should be responsible for cleaning up the overlay.
*/
public void stopSwipePipToHome(int taskId, ComponentName componentName, Rect destinationBounds,
SurfaceControl overlay, Rect appBounds) {
SurfaceControl overlay, Rect appBounds, Rect sourceRectHint) {
if (mPip != null) {
try {
mPip.stopSwipePipToHome(taskId, componentName, destinationBounds, overlay,
appBounds);
appBounds, sourceRectHint);
} catch (RemoteException e) {
Log.w(TAG, "Failed call stopSwipePipToHome");
}

View File

@@ -272,6 +272,10 @@ public class SwipePipToHomeAnimator extends RectFSpringAnim {
return mAppBounds;
}
public Rect getSourceRectHint() {
return mSourceRectHint;
}
@Nullable
public SurfaceControl getContentOverlay() {
return mPipContentOverlay == null ? null : mPipContentOverlay.getLeash();