From 267087150567a6ec4e6a029ef1613b760d803f53 Mon Sep 17 00:00:00 2001 From: Riddle Hsu Date: Mon, 3 Jun 2024 10:59:57 +0800 Subject: [PATCH] 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 --- quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java | 3 ++- quickstep/src/com/android/quickstep/SystemUiProxy.java | 4 ++-- .../com/android/quickstep/util/SwipePipToHomeAnimator.java | 4 ++++ 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java b/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java index 4752225ec6..cc14044c3f 100644 --- a/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java +++ b/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java @@ -1582,7 +1582,8 @@ public abstract class AbsSwipeUpHandler, mSwipePipToHomeAnimator.getComponentName(), mSwipePipToHomeAnimator.getDestinationBounds(), mSwipePipToHomeAnimator.getContentOverlay(), - mSwipePipToHomeAnimator.getAppBounds()); + mSwipePipToHomeAnimator.getAppBounds(), + mSwipePipToHomeAnimator.getSourceRectHint()); windowAnim = mSwipePipToHomeAnimators; } else { diff --git a/quickstep/src/com/android/quickstep/SystemUiProxy.java b/quickstep/src/com/android/quickstep/SystemUiProxy.java index 72f67fc544..766da7bbaf 100644 --- a/quickstep/src/com/android/quickstep/SystemUiProxy.java +++ b/quickstep/src/com/android/quickstep/SystemUiProxy.java @@ -653,11 +653,11 @@ public class SystemUiProxy implements ISystemUiProxy, NavHandle { * 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"); } diff --git a/quickstep/src/com/android/quickstep/util/SwipePipToHomeAnimator.java b/quickstep/src/com/android/quickstep/util/SwipePipToHomeAnimator.java index f823affef9..c18bad0e9d 100644 --- a/quickstep/src/com/android/quickstep/util/SwipePipToHomeAnimator.java +++ b/quickstep/src/com/android/quickstep/util/SwipePipToHomeAnimator.java @@ -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();