Reparent PiP overlay under task as soon as possible am: e338982c97

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Launcher3/+/23731681

Change-Id: I278da202f07c48d0580502fd08018268e7752325
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Mateusz Cicheński
2023-06-21 20:38:30 +00:00
committed by Automerger Merge Worker
2 changed files with 17 additions and 8 deletions
@@ -1515,6 +1515,20 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
if (mSwipePipToHomeReleaseCheck != null) {
mSwipePipToHomeReleaseCheck.setCanRelease(false);
}
// grab a screenshot before the PipContentOverlay gets parented on top of the task
UI_HELPER_EXECUTOR.execute(() -> {
mTaskSnapshot = mRecentsAnimationController.screenshotTask(
mGestureState.getRunningTaskId());
});
// let SystemUi reparent the overlay leash as soon as possible
SystemUiProxy.INSTANCE.get(mContext).stopSwipePipToHome(
mSwipePipToHomeAnimator.getTaskId(),
mSwipePipToHomeAnimator.getComponentName(),
mSwipePipToHomeAnimator.getDestinationBounds(),
mSwipePipToHomeAnimator.getContentOverlay());
windowAnim = mSwipePipToHomeAnimators;
} else {
mSwipePipToHomeAnimator = null;
@@ -2089,11 +2103,6 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
*/
private void maybeFinishSwipePipToHome() {
if (mIsSwipingPipToHome && mSwipePipToHomeAnimators[0] != null) {
SystemUiProxy.INSTANCE.get(mContext).stopSwipePipToHome(
mSwipePipToHomeAnimator.getTaskId(),
mSwipePipToHomeAnimator.getComponentName(),
mSwipePipToHomeAnimator.getDestinationBounds(),
mSwipePipToHomeAnimator.getContentOverlay());
mRecentsAnimationController.setFinishTaskTransaction(
mSwipePipToHomeAnimator.getTaskId(),
mSwipePipToHomeAnimator.getFinishTransaction(),
@@ -549,9 +549,9 @@ public class SystemUiProxy implements ISystemUiProxy {
}
/**
* 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.
* Notifies WM Shell that launcher has finished the preparation of 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) {