Transfer PipContentOverlay when swipe to home with Shell transition

Update launcher to pass the taskId to Shell, so that Shell can reparent
the overlay from the remote transition leash to the Task leash.
Otherwise the overlay will be removed with the transition leash when
transition is finished.

Bug: 222030101
Test: verify with swipe to home with Shell transition
Change-Id: I838c22951fdf79c3213f2c9b1cb73a4a90341597
This commit is contained in:
Chris Li
2022-03-02 22:51:27 +08:00
parent 42698fcb17
commit 411c1b4856
2 changed files with 8 additions and 2 deletions

View File

@@ -1760,6 +1760,7 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
private void maybeFinishSwipeToHome() {
if (mIsSwipingPipToHome && mSwipePipToHomeAnimators[0] != null) {
SystemUiProxy.INSTANCE.get(mContext).stopSwipePipToHome(
mSwipePipToHomeAnimator.getTaskId(),
mSwipePipToHomeAnimator.getComponentName(),
mSwipePipToHomeAnimator.getDestinationBounds(),
mSwipePipToHomeAnimator.getContentOverlay());

View File

@@ -541,11 +541,16 @@ public class SystemUiProxy implements ISystemUiProxy,
return null;
}
public void stopSwipePipToHome(ComponentName componentName, Rect destinationBounds,
/**
* Notifies WM Shell that launcher has finished all the animation for swipe to home. WM Shell
* can choose to fade out the overlay when entering PIP is finished, and WM Shell should be
* responsible for cleaning up the overlay.
*/
public void stopSwipePipToHome(int taskId, ComponentName componentName, Rect destinationBounds,
SurfaceControl overlay) {
if (mPip != null) {
try {
mPip.stopSwipePipToHome(componentName, destinationBounds, overlay);
mPip.stopSwipePipToHome(taskId, componentName, destinationBounds, overlay);
} catch (RemoteException e) {
Log.w(TAG, "Failed call stopSwipePipToHome");
}