Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5c80561b authored by Hongwei Wang's avatar Hongwei Wang
Browse files

Avoid conflict surface reset on auto-enter-pip

FullscreenUnfoldController#resetSurface happens in between
RecentsAnimationController cleanup and PipTaskOrganizer#onTaskAppeared
may cause flicker at the end of auto-enter-pip transition.

Fix it by intentionally ignore resetSurface if the task's pinned.

Bug: 203724707
Bug: 204284060
Test: repeatedly swipe to enter PiP from YT on foldables
Change-Id: Ie074e8a506d2526fc081ff4d089a2acb00549286
parent b223ed58
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.wm.shell.fullscreen;

import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED;
import static android.util.MathUtils.lerp;
import static android.view.Display.DEFAULT_DISPLAY;

@@ -163,7 +164,10 @@ public final class FullscreenUnfoldController implements UnfoldListener,
    public void onTaskVanished(ActivityManager.RunningTaskInfo taskInfo) {
        AnimationContext animationContext = mAnimationContextByTaskId.get(taskInfo.taskId);
        if (animationContext != null) {
            // PiP task has its own cleanup path, ignore surface reset to avoid conflict.
            if (taskInfo.getWindowingMode() != WINDOWING_MODE_PINNED) {
                resetSurface(animationContext);
            }
            mAnimationContextByTaskId.remove(taskInfo.taskId);
        }