Merge "Skip finishResize for non-exit animation if PIP is about to exit" into sc-dev
This commit is contained in:
@@ -89,6 +89,11 @@ public class PipAnimationController {
|
|||||||
|| direction == TRANSITION_DIRECTION_LEAVE_PIP_TO_SPLIT_SCREEN;
|
|| direction == TRANSITION_DIRECTION_LEAVE_PIP_TO_SPLIT_SCREEN;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Whether the given direction represents removing PIP. */
|
||||||
|
public static boolean isRemovePipDirection(@TransitionDirection int direction) {
|
||||||
|
return direction == TRANSITION_DIRECTION_REMOVE_STACK;
|
||||||
|
}
|
||||||
|
|
||||||
private final PipSurfaceTransactionHelper mSurfaceTransactionHelper;
|
private final PipSurfaceTransactionHelper mSurfaceTransactionHelper;
|
||||||
|
|
||||||
private final ThreadLocal<AnimationHandler> mSfAnimationHandlerThreadLocal =
|
private final ThreadLocal<AnimationHandler> mSfAnimationHandlerThreadLocal =
|
||||||
|
|||||||
@@ -39,6 +39,7 @@ import static com.android.wm.shell.pip.PipAnimationController.TRANSITION_DIRECTI
|
|||||||
import static com.android.wm.shell.pip.PipAnimationController.TRANSITION_DIRECTION_USER_RESIZE;
|
import static com.android.wm.shell.pip.PipAnimationController.TRANSITION_DIRECTION_USER_RESIZE;
|
||||||
import static com.android.wm.shell.pip.PipAnimationController.isInPipDirection;
|
import static com.android.wm.shell.pip.PipAnimationController.isInPipDirection;
|
||||||
import static com.android.wm.shell.pip.PipAnimationController.isOutPipDirection;
|
import static com.android.wm.shell.pip.PipAnimationController.isOutPipDirection;
|
||||||
|
import static com.android.wm.shell.pip.PipAnimationController.isRemovePipDirection;
|
||||||
|
|
||||||
import android.animation.Animator;
|
import android.animation.Animator;
|
||||||
import android.animation.AnimatorListenerAdapter;
|
import android.animation.AnimatorListenerAdapter;
|
||||||
@@ -186,8 +187,17 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener,
|
|||||||
mDeferredAnimEndTransaction = tx;
|
mDeferredAnimEndTransaction = tx;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
final boolean isExitPipDirection = isOutPipDirection(direction)
|
||||||
|
|| isRemovePipDirection(direction);
|
||||||
|
if (mState != State.EXITING_PIP || isExitPipDirection) {
|
||||||
|
// Finish resize as long as we're not exiting PIP, or, if we are, only if this is
|
||||||
|
// the end of an exit PIP animation.
|
||||||
|
// This is necessary in case there was a resize animation ongoing when exit PIP
|
||||||
|
// started, in which case the first resize will be skipped to let the exit
|
||||||
|
// operation handle the final resize out of PIP mode. See b/185306679.
|
||||||
finishResize(tx, destinationBounds, direction, animationType);
|
finishResize(tx, destinationBounds, direction, animationType);
|
||||||
sendOnPipTransitionFinished(direction);
|
sendOnPipTransitionFinished(direction);
|
||||||
|
}
|
||||||
if (direction == TRANSITION_DIRECTION_TO_PIP) {
|
if (direction == TRANSITION_DIRECTION_TO_PIP) {
|
||||||
// TODO (b//169221267): Add jank listener for transactions without buffer updates.
|
// TODO (b//169221267): Add jank listener for transactions without buffer updates.
|
||||||
//InteractionJankMonitor.getInstance().end(
|
//InteractionJankMonitor.getInstance().end(
|
||||||
|
|||||||
Reference in New Issue
Block a user