Loading libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTransition.java +21 −4 Original line number Diff line number Diff line Loading @@ -339,20 +339,37 @@ public class PipTransition extends PipTransitionController { } // This means an expand happened before enter-pip finished and we are now "merging" a // no-op transition that happens to match our exit-pip. // Or that the keyguard is up and preventing the transition from applying, in which case we // want to manually reset pip. (b/283783868) boolean cancelled = false; if (mPipAnimationController.getCurrentAnimator() != null) { mPipAnimationController.getCurrentAnimator().cancel(); mPipAnimationController.resetAnimatorState(); cancelled = true; } // Unset exitTransition AFTER cancel so that finishResize knows we are merging. mExitTransition = null; if (!cancelled || aborted) return; if (!cancelled) return; final ActivityManager.RunningTaskInfo taskInfo = mPipOrganizer.getTaskInfo(); if (taskInfo != null) { if (aborted) { // keyguard case - the transition got aborted, so we want to reset state and // windowing mode before reapplying the resize transaction sendOnPipTransitionFinished(TRANSITION_DIRECTION_LEAVE_PIP); mPipOrganizer.onExitPipFinished(taskInfo); WindowContainerTransaction wct = new WindowContainerTransaction(); mPipOrganizer.applyWindowingModeChangeOnExit(wct, TRANSITION_DIRECTION_LEAVE_PIP); wct.setBounds(taskInfo.token, null); mPipOrganizer.applyFinishBoundsResize(wct, TRANSITION_DIRECTION_LEAVE_PIP, false); } else { // merge case startExpandAnimation(taskInfo, mPipOrganizer.getSurfaceControl(), mPipBoundsState.getBounds(), mPipBoundsState.getBounds(), new Rect(mExitDestinationBounds), Surface.ROTATION_0, null /* startT */); } } mExitDestinationBounds.setEmpty(); mCurrentPipTaskToken = null; } Loading libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/TaskSnapshotWindow.java +8 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.wm.shell.startingsurface; import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED; import static android.graphics.Color.WHITE; import static android.os.Trace.TRACE_TAG_WINDOW_MANAGER; import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_STARTING; Loading Loading @@ -77,6 +78,13 @@ public class TaskSnapshotWindow { @NonNull Runnable clearWindowHandler) { final ActivityManager.RunningTaskInfo runningTaskInfo = info.taskInfo; final int taskId = runningTaskInfo.taskId; // if we're in PIP we don't want to create the snapshot if (runningTaskInfo.getWindowingMode() == WINDOWING_MODE_PINNED) { ProtoLog.v(ShellProtoLogGroup.WM_SHELL_STARTING_WINDOW, "did not create taskSnapshot due to being in PIP"); return null; } ProtoLog.v(ShellProtoLogGroup.WM_SHELL_STARTING_WINDOW, "create taskSnapshot surface for task: %d", taskId); Loading Loading
libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTransition.java +21 −4 Original line number Diff line number Diff line Loading @@ -339,20 +339,37 @@ public class PipTransition extends PipTransitionController { } // This means an expand happened before enter-pip finished and we are now "merging" a // no-op transition that happens to match our exit-pip. // Or that the keyguard is up and preventing the transition from applying, in which case we // want to manually reset pip. (b/283783868) boolean cancelled = false; if (mPipAnimationController.getCurrentAnimator() != null) { mPipAnimationController.getCurrentAnimator().cancel(); mPipAnimationController.resetAnimatorState(); cancelled = true; } // Unset exitTransition AFTER cancel so that finishResize knows we are merging. mExitTransition = null; if (!cancelled || aborted) return; if (!cancelled) return; final ActivityManager.RunningTaskInfo taskInfo = mPipOrganizer.getTaskInfo(); if (taskInfo != null) { if (aborted) { // keyguard case - the transition got aborted, so we want to reset state and // windowing mode before reapplying the resize transaction sendOnPipTransitionFinished(TRANSITION_DIRECTION_LEAVE_PIP); mPipOrganizer.onExitPipFinished(taskInfo); WindowContainerTransaction wct = new WindowContainerTransaction(); mPipOrganizer.applyWindowingModeChangeOnExit(wct, TRANSITION_DIRECTION_LEAVE_PIP); wct.setBounds(taskInfo.token, null); mPipOrganizer.applyFinishBoundsResize(wct, TRANSITION_DIRECTION_LEAVE_PIP, false); } else { // merge case startExpandAnimation(taskInfo, mPipOrganizer.getSurfaceControl(), mPipBoundsState.getBounds(), mPipBoundsState.getBounds(), new Rect(mExitDestinationBounds), Surface.ROTATION_0, null /* startT */); } } mExitDestinationBounds.setEmpty(); mCurrentPipTaskToken = null; } Loading
libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/TaskSnapshotWindow.java +8 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.wm.shell.startingsurface; import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED; import static android.graphics.Color.WHITE; import static android.os.Trace.TRACE_TAG_WINDOW_MANAGER; import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_STARTING; Loading Loading @@ -77,6 +78,13 @@ public class TaskSnapshotWindow { @NonNull Runnable clearWindowHandler) { final ActivityManager.RunningTaskInfo runningTaskInfo = info.taskInfo; final int taskId = runningTaskInfo.taskId; // if we're in PIP we don't want to create the snapshot if (runningTaskInfo.getWindowingMode() == WINDOWING_MODE_PINNED) { ProtoLog.v(ShellProtoLogGroup.WM_SHELL_STARTING_WINDOW, "did not create taskSnapshot due to being in PIP"); return null; } ProtoLog.v(ShellProtoLogGroup.WM_SHELL_STARTING_WINDOW, "create taskSnapshot surface for task: %d", taskId); Loading