Loading libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTaskOrganizer.java +5 −1 Original line number Diff line number Diff line Loading @@ -1292,13 +1292,17 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener, } Rect baseBounds = direction == TRANSITION_DIRECTION_SNAP_AFTER_RESIZE ? mPipBoundsState.getBounds() : currentBounds; final boolean existingAnimatorRunning = mPipAnimationController.getCurrentAnimator() != null && mPipAnimationController.getCurrentAnimator().isRunning(); final PipAnimationController.PipTransitionAnimator<?> animator = mPipAnimationController .getAnimator(mTaskInfo, mLeash, baseBounds, currentBounds, destinationBounds, sourceHintRect, direction, startingAngle, rotationDelta); animator.setTransitionDirection(direction) .setPipAnimationCallback(mPipAnimationCallback) .setPipTransactionHandler(mPipTransactionHandler) .setDuration(durationMs); if (!existingAnimatorRunning) { animator.setPipAnimationCallback(mPipAnimationCallback); } if (isInPipDirection(direction)) { // Similar to auto-enter-pip transition, we use content overlay when there is no // source rect hint to enter PiP use bounds animation. Loading libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTransition.java +20 −3 Original line number Diff line number Diff line Loading @@ -116,6 +116,12 @@ public class PipTransition extends PipTransitionController { if (mExitTransition == transition || info.getType() == TRANSIT_EXIT_PIP) { mExitTransition = null; if (info.getChanges().size() == 1) { if (mFinishCallback != null) { mFinishCallback.onTransitionFinished(null, null); mFinishCallback = null; throw new RuntimeException("Previous callback not called, aborting exit PIP."); } final TransitionInfo.Change change = info.getChanges().get(0); mFinishCallback = finishCallback; startTransaction.apply(); Loading @@ -129,6 +135,12 @@ public class PipTransition extends PipTransitionController { } if (info.getType() == TRANSIT_REMOVE_PIP) { if (mFinishCallback != null) { mFinishCallback.onTransitionFinished(null /* wct */, null /* callback */); mFinishCallback = null; throw new RuntimeException("Previous callback not called, aborting remove PIP."); } startTransaction.apply(); finishTransaction.setWindowCrop(info.getChanges().get(0).getLeash(), mPipBoundsState.getDisplayBounds()); Loading Loading @@ -159,6 +171,12 @@ public class PipTransition extends PipTransitionController { return false; } if (mFinishCallback != null) { mFinishCallback.onTransitionFinished(null /* wct */, null /* callback */); mFinishCallback = null; throw new RuntimeException("Previous callback not called, aborting entering PIP."); } // Show the wallpaper if there is a wallpaper change. if (wallpaper != null) { startTransaction.show(wallpaper.getLeash()); Loading Loading @@ -231,7 +249,7 @@ public class PipTransition extends PipTransitionController { if (tx != null) { wct.setBoundsChangeTransaction(taskInfo.token, tx); } mFinishCallback.onTransitionFinished(wct, null /* wctCallback */); mFinishCallback.onTransitionFinished(wct, null /* callback */); mFinishCallback = null; } finishResizeForMenu(destinationBounds); Loading @@ -240,7 +258,7 @@ public class PipTransition extends PipTransitionController { @Override public void forceFinishTransition() { if (mFinishCallback == null) return; mFinishCallback.onTransitionFinished(null /* wct */, null /* wctCallback */); mFinishCallback.onTransitionFinished(null /* wct */, null /* callback */); mFinishCallback = null; } Loading Loading @@ -286,7 +304,6 @@ public class PipTransition extends PipTransitionController { mPipBoundsState.setBounds(destinationBounds); onFinishResize(taskInfo, destinationBounds, TRANSITION_DIRECTION_TO_PIP, null /* tx */); sendOnPipTransitionFinished(TRANSITION_DIRECTION_TO_PIP); mFinishCallback = null; mPipTransitionState.setInSwipePipToHomeTransition(false); return true; } Loading Loading
libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTaskOrganizer.java +5 −1 Original line number Diff line number Diff line Loading @@ -1292,13 +1292,17 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener, } Rect baseBounds = direction == TRANSITION_DIRECTION_SNAP_AFTER_RESIZE ? mPipBoundsState.getBounds() : currentBounds; final boolean existingAnimatorRunning = mPipAnimationController.getCurrentAnimator() != null && mPipAnimationController.getCurrentAnimator().isRunning(); final PipAnimationController.PipTransitionAnimator<?> animator = mPipAnimationController .getAnimator(mTaskInfo, mLeash, baseBounds, currentBounds, destinationBounds, sourceHintRect, direction, startingAngle, rotationDelta); animator.setTransitionDirection(direction) .setPipAnimationCallback(mPipAnimationCallback) .setPipTransactionHandler(mPipTransactionHandler) .setDuration(durationMs); if (!existingAnimatorRunning) { animator.setPipAnimationCallback(mPipAnimationCallback); } if (isInPipDirection(direction)) { // Similar to auto-enter-pip transition, we use content overlay when there is no // source rect hint to enter PiP use bounds animation. Loading
libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTransition.java +20 −3 Original line number Diff line number Diff line Loading @@ -116,6 +116,12 @@ public class PipTransition extends PipTransitionController { if (mExitTransition == transition || info.getType() == TRANSIT_EXIT_PIP) { mExitTransition = null; if (info.getChanges().size() == 1) { if (mFinishCallback != null) { mFinishCallback.onTransitionFinished(null, null); mFinishCallback = null; throw new RuntimeException("Previous callback not called, aborting exit PIP."); } final TransitionInfo.Change change = info.getChanges().get(0); mFinishCallback = finishCallback; startTransaction.apply(); Loading @@ -129,6 +135,12 @@ public class PipTransition extends PipTransitionController { } if (info.getType() == TRANSIT_REMOVE_PIP) { if (mFinishCallback != null) { mFinishCallback.onTransitionFinished(null /* wct */, null /* callback */); mFinishCallback = null; throw new RuntimeException("Previous callback not called, aborting remove PIP."); } startTransaction.apply(); finishTransaction.setWindowCrop(info.getChanges().get(0).getLeash(), mPipBoundsState.getDisplayBounds()); Loading Loading @@ -159,6 +171,12 @@ public class PipTransition extends PipTransitionController { return false; } if (mFinishCallback != null) { mFinishCallback.onTransitionFinished(null /* wct */, null /* callback */); mFinishCallback = null; throw new RuntimeException("Previous callback not called, aborting entering PIP."); } // Show the wallpaper if there is a wallpaper change. if (wallpaper != null) { startTransaction.show(wallpaper.getLeash()); Loading Loading @@ -231,7 +249,7 @@ public class PipTransition extends PipTransitionController { if (tx != null) { wct.setBoundsChangeTransaction(taskInfo.token, tx); } mFinishCallback.onTransitionFinished(wct, null /* wctCallback */); mFinishCallback.onTransitionFinished(wct, null /* callback */); mFinishCallback = null; } finishResizeForMenu(destinationBounds); Loading @@ -240,7 +258,7 @@ public class PipTransition extends PipTransitionController { @Override public void forceFinishTransition() { if (mFinishCallback == null) return; mFinishCallback.onTransitionFinished(null /* wct */, null /* wctCallback */); mFinishCallback.onTransitionFinished(null /* wct */, null /* callback */); mFinishCallback = null; } Loading Loading @@ -286,7 +304,6 @@ public class PipTransition extends PipTransitionController { mPipBoundsState.setBounds(destinationBounds); onFinishResize(taskInfo, destinationBounds, TRANSITION_DIRECTION_TO_PIP, null /* tx */); sendOnPipTransitionFinished(TRANSITION_DIRECTION_TO_PIP); mFinishCallback = null; mPipTransitionState.setInSwipePipToHomeTransition(false); return true; } Loading