Loading libs/WindowManager/Shell/src/com/android/wm/shell/dagger/TvPipModule.java +6 −4 Original line number Original line Diff line number Diff line Loading @@ -206,6 +206,7 @@ public abstract class TvPipModule { TvPipMenuController tvPipMenuController, TvPipMenuController tvPipMenuController, SyncTransactionQueue syncTransactionQueue, SyncTransactionQueue syncTransactionQueue, TvPipBoundsState tvPipBoundsState, TvPipBoundsState tvPipBoundsState, PipSizeSpecHandler pipSizeSpecHandler, PipTransitionState pipTransitionState, PipTransitionState pipTransitionState, TvPipBoundsAlgorithm tvPipBoundsAlgorithm, TvPipBoundsAlgorithm tvPipBoundsAlgorithm, PipAnimationController pipAnimationController, PipAnimationController pipAnimationController, Loading @@ -217,10 +218,11 @@ public abstract class TvPipModule { PipUiEventLogger pipUiEventLogger, ShellTaskOrganizer shellTaskOrganizer, PipUiEventLogger pipUiEventLogger, ShellTaskOrganizer shellTaskOrganizer, @ShellMainThread ShellExecutor mainExecutor) { @ShellMainThread ShellExecutor mainExecutor) { return new TvPipTaskOrganizer(context, return new TvPipTaskOrganizer(context, syncTransactionQueue, pipTransitionState, tvPipBoundsState, tvPipBoundsAlgorithm, syncTransactionQueue, pipTransitionState, tvPipBoundsState, pipSizeSpecHandler, tvPipMenuController, pipAnimationController, pipSurfaceTransactionHelper, tvPipBoundsAlgorithm, tvPipMenuController, pipAnimationController, pipTransitionController, pipParamsChangedForwarder, splitScreenControllerOptional, pipSurfaceTransactionHelper, pipTransitionController, pipParamsChangedForwarder, displayController, pipUiEventLogger, shellTaskOrganizer, mainExecutor); splitScreenControllerOptional, displayController, pipUiEventLogger, shellTaskOrganizer, mainExecutor); } } @WMSingleton @WMSingleton Loading libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellModule.java +11 −8 Original line number Original line Diff line number Diff line Loading @@ -442,6 +442,7 @@ public abstract class WMShellModule { SyncTransactionQueue syncTransactionQueue, SyncTransactionQueue syncTransactionQueue, PipTransitionState pipTransitionState, PipTransitionState pipTransitionState, PipBoundsState pipBoundsState, PipBoundsState pipBoundsState, PipSizeSpecHandler pipSizeSpecHandler, PipBoundsAlgorithm pipBoundsAlgorithm, PipBoundsAlgorithm pipBoundsAlgorithm, PhonePipMenuController menuPhoneController, PhonePipMenuController menuPhoneController, PipAnimationController pipAnimationController, PipAnimationController pipAnimationController, Loading @@ -453,10 +454,11 @@ public abstract class WMShellModule { PipUiEventLogger pipUiEventLogger, ShellTaskOrganizer shellTaskOrganizer, PipUiEventLogger pipUiEventLogger, ShellTaskOrganizer shellTaskOrganizer, @ShellMainThread ShellExecutor mainExecutor) { @ShellMainThread ShellExecutor mainExecutor) { return new PipTaskOrganizer(context, return new PipTaskOrganizer(context, syncTransactionQueue, pipTransitionState, pipBoundsState, pipBoundsAlgorithm, syncTransactionQueue, pipTransitionState, pipBoundsState, pipSizeSpecHandler, menuPhoneController, pipAnimationController, pipSurfaceTransactionHelper, pipBoundsAlgorithm, menuPhoneController, pipAnimationController, pipTransitionController, pipParamsChangedForwarder, splitScreenControllerOptional, pipSurfaceTransactionHelper, pipTransitionController, pipParamsChangedForwarder, displayController, pipUiEventLogger, shellTaskOrganizer, mainExecutor); splitScreenControllerOptional, displayController, pipUiEventLogger, shellTaskOrganizer, mainExecutor); } } @WMSingleton @WMSingleton Loading @@ -471,13 +473,14 @@ public abstract class WMShellModule { static PipTransitionController providePipTransitionController(Context context, static PipTransitionController providePipTransitionController(Context context, ShellInit shellInit, ShellTaskOrganizer shellTaskOrganizer, Transitions transitions, ShellInit shellInit, ShellTaskOrganizer shellTaskOrganizer, Transitions transitions, PipAnimationController pipAnimationController, PipBoundsAlgorithm pipBoundsAlgorithm, PipAnimationController pipAnimationController, PipBoundsAlgorithm pipBoundsAlgorithm, PipBoundsState pipBoundsState, PipTransitionState pipTransitionState, PipBoundsState pipBoundsState, PipSizeSpecHandler pipSizeSpecHandler, PhonePipMenuController pipMenuController, PipTransitionState pipTransitionState, PhonePipMenuController pipMenuController, PipSurfaceTransactionHelper pipSurfaceTransactionHelper, PipSurfaceTransactionHelper pipSurfaceTransactionHelper, Optional<SplitScreenController> splitScreenOptional) { Optional<SplitScreenController> splitScreenOptional) { return new PipTransition(context, shellInit, shellTaskOrganizer, transitions, return new PipTransition(context, shellInit, shellTaskOrganizer, transitions, pipBoundsState, pipTransitionState, pipMenuController, pipBoundsAlgorithm, pipBoundsState, pipSizeSpecHandler, pipTransitionState, pipMenuController, pipAnimationController, pipSurfaceTransactionHelper, splitScreenOptional); pipBoundsAlgorithm, pipAnimationController, pipSurfaceTransactionHelper, splitScreenOptional); } } @WMSingleton @WMSingleton Loading libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipBoundsState.java +2 −2 Original line number Original line Diff line number Diff line Loading @@ -311,10 +311,10 @@ public class PipBoundsState { mDisplayLayout.set(displayLayout); mDisplayLayout.set(displayLayout); } } /** Get the display layout. */ /** Get a copy of the display layout. */ @NonNull @NonNull public DisplayLayout getDisplayLayout() { public DisplayLayout getDisplayLayout() { return mDisplayLayout; return new DisplayLayout(mDisplayLayout); } } @VisibleForTesting @VisibleForTesting Loading libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTaskOrganizer.java +11 −1 Original line number Original line Diff line number Diff line Loading @@ -79,11 +79,13 @@ import com.android.wm.shell.R; import com.android.wm.shell.ShellTaskOrganizer; import com.android.wm.shell.ShellTaskOrganizer; import com.android.wm.shell.animation.Interpolators; import com.android.wm.shell.animation.Interpolators; import com.android.wm.shell.common.DisplayController; import com.android.wm.shell.common.DisplayController; import com.android.wm.shell.common.DisplayLayout; import com.android.wm.shell.common.ScreenshotUtils; import com.android.wm.shell.common.ScreenshotUtils; import com.android.wm.shell.common.ShellExecutor; import com.android.wm.shell.common.ShellExecutor; import com.android.wm.shell.common.SyncTransactionQueue; import com.android.wm.shell.common.SyncTransactionQueue; import com.android.wm.shell.common.annotations.ShellMainThread; import com.android.wm.shell.common.annotations.ShellMainThread; import com.android.wm.shell.pip.phone.PipMotionHelper; import com.android.wm.shell.pip.phone.PipMotionHelper; import com.android.wm.shell.pip.phone.PipSizeSpecHandler; import com.android.wm.shell.protolog.ShellProtoLogGroup; import com.android.wm.shell.protolog.ShellProtoLogGroup; import com.android.wm.shell.splitscreen.SplitScreenController; import com.android.wm.shell.splitscreen.SplitScreenController; import com.android.wm.shell.transition.Transitions; import com.android.wm.shell.transition.Transitions; Loading Loading @@ -126,6 +128,7 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener, private final Context mContext; private final Context mContext; private final SyncTransactionQueue mSyncTransactionQueue; private final SyncTransactionQueue mSyncTransactionQueue; private final PipBoundsState mPipBoundsState; private final PipBoundsState mPipBoundsState; private final PipSizeSpecHandler mPipSizeSpecHandler; private final PipBoundsAlgorithm mPipBoundsAlgorithm; private final PipBoundsAlgorithm mPipBoundsAlgorithm; private final @NonNull PipMenuController mPipMenuController; private final @NonNull PipMenuController mPipMenuController; private final PipAnimationController mPipAnimationController; private final PipAnimationController mPipAnimationController; Loading Loading @@ -313,6 +316,7 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener, @NonNull SyncTransactionQueue syncTransactionQueue, @NonNull SyncTransactionQueue syncTransactionQueue, @NonNull PipTransitionState pipTransitionState, @NonNull PipTransitionState pipTransitionState, @NonNull PipBoundsState pipBoundsState, @NonNull PipBoundsState pipBoundsState, @NonNull PipSizeSpecHandler pipSizeSpecHandler, @NonNull PipBoundsAlgorithm boundsHandler, @NonNull PipBoundsAlgorithm boundsHandler, @NonNull PipMenuController pipMenuController, @NonNull PipMenuController pipMenuController, @NonNull PipAnimationController pipAnimationController, @NonNull PipAnimationController pipAnimationController, Loading @@ -328,6 +332,7 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener, mSyncTransactionQueue = syncTransactionQueue; mSyncTransactionQueue = syncTransactionQueue; mPipTransitionState = pipTransitionState; mPipTransitionState = pipTransitionState; mPipBoundsState = pipBoundsState; mPipBoundsState = pipBoundsState; mPipSizeSpecHandler = pipSizeSpecHandler; mPipBoundsAlgorithm = boundsHandler; mPipBoundsAlgorithm = boundsHandler; mPipMenuController = pipMenuController; mPipMenuController = pipMenuController; mPipTransitionController = pipTransitionController; mPipTransitionController = pipTransitionController; Loading Loading @@ -1601,7 +1606,12 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener, private @Nullable Rect computeRotatedBounds(int rotationDelta, int direction, private @Nullable Rect computeRotatedBounds(int rotationDelta, int direction, Rect outDestinationBounds, Rect sourceHintRect) { Rect outDestinationBounds, Rect sourceHintRect) { if (direction == TRANSITION_DIRECTION_TO_PIP) { if (direction == TRANSITION_DIRECTION_TO_PIP) { mPipBoundsState.getDisplayLayout().rotateTo(mContext.getResources(), mNextRotation); DisplayLayout layoutCopy = mPipBoundsState.getDisplayLayout(); layoutCopy.rotateTo(mContext.getResources(), mNextRotation); mPipBoundsState.setDisplayLayout(layoutCopy); mPipSizeSpecHandler.setDisplayLayout(layoutCopy); final Rect displayBounds = mPipBoundsState.getDisplayBounds(); final Rect displayBounds = mPipBoundsState.getDisplayBounds(); outDestinationBounds.set(mPipBoundsAlgorithm.getEntryDestinationBounds()); outDestinationBounds.set(mPipBoundsAlgorithm.getEntryDestinationBounds()); // Transform the destination bounds to current display coordinates. // Transform the destination bounds to current display coordinates. Loading libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTransition.java +17 −2 Original line number Original line Diff line number Diff line Loading @@ -65,6 +65,8 @@ import androidx.annotation.Nullable; import com.android.internal.protolog.common.ProtoLog; import com.android.internal.protolog.common.ProtoLog; import com.android.wm.shell.R; import com.android.wm.shell.R; import com.android.wm.shell.ShellTaskOrganizer; import com.android.wm.shell.ShellTaskOrganizer; import com.android.wm.shell.common.DisplayLayout; import com.android.wm.shell.pip.phone.PipSizeSpecHandler; import com.android.wm.shell.protolog.ShellProtoLogGroup; import com.android.wm.shell.protolog.ShellProtoLogGroup; import com.android.wm.shell.splitscreen.SplitScreenController; import com.android.wm.shell.splitscreen.SplitScreenController; import com.android.wm.shell.sysui.ShellInit; import com.android.wm.shell.sysui.ShellInit; Loading @@ -83,6 +85,7 @@ public class PipTransition extends PipTransitionController { private final Context mContext; private final Context mContext; private final PipTransitionState mPipTransitionState; private final PipTransitionState mPipTransitionState; private final PipSizeSpecHandler mPipSizeSpecHandler; private final int mEnterExitAnimationDuration; private final int mEnterExitAnimationDuration; private final PipSurfaceTransactionHelper mSurfaceTransactionHelper; private final PipSurfaceTransactionHelper mSurfaceTransactionHelper; private final Optional<SplitScreenController> mSplitScreenOptional; private final Optional<SplitScreenController> mSplitScreenOptional; Loading Loading @@ -113,6 +116,7 @@ public class PipTransition extends PipTransitionController { @NonNull ShellTaskOrganizer shellTaskOrganizer, @NonNull ShellTaskOrganizer shellTaskOrganizer, @NonNull Transitions transitions, @NonNull Transitions transitions, PipBoundsState pipBoundsState, PipBoundsState pipBoundsState, PipSizeSpecHandler pipSizeSpecHandler, PipTransitionState pipTransitionState, PipTransitionState pipTransitionState, PipMenuController pipMenuController, PipMenuController pipMenuController, PipBoundsAlgorithm pipBoundsAlgorithm, PipBoundsAlgorithm pipBoundsAlgorithm, Loading @@ -123,6 +127,7 @@ public class PipTransition extends PipTransitionController { pipBoundsAlgorithm, pipAnimationController); pipBoundsAlgorithm, pipAnimationController); mContext = context; mContext = context; mPipTransitionState = pipTransitionState; mPipTransitionState = pipTransitionState; mPipSizeSpecHandler = pipSizeSpecHandler; mEnterExitAnimationDuration = context.getResources() mEnterExitAnimationDuration = context.getResources() .getInteger(R.integer.config_pipResizeAnimationDuration); .getInteger(R.integer.config_pipResizeAnimationDuration); mSurfaceTransactionHelper = pipSurfaceTransactionHelper; mSurfaceTransactionHelper = pipSurfaceTransactionHelper; Loading Loading @@ -308,7 +313,12 @@ public class PipTransition extends PipTransitionController { // initial state under the new rotation. // initial state under the new rotation. int rotationDelta = deltaRotation(startRotation, endRotation); int rotationDelta = deltaRotation(startRotation, endRotation); if (rotationDelta != Surface.ROTATION_0) { if (rotationDelta != Surface.ROTATION_0) { mPipBoundsState.getDisplayLayout().rotateTo(mContext.getResources(), endRotation); DisplayLayout layoutCopy = mPipBoundsState.getDisplayLayout(); layoutCopy.rotateTo(mContext.getResources(), endRotation); mPipBoundsState.setDisplayLayout(layoutCopy); mPipSizeSpecHandler.setDisplayLayout(layoutCopy); final Rect destinationBounds = mPipBoundsAlgorithm.getEntryDestinationBounds(); final Rect destinationBounds = mPipBoundsAlgorithm.getEntryDestinationBounds(); wct.setBounds(mRequestedEnterTask, destinationBounds); wct.setBounds(mRequestedEnterTask, destinationBounds); return true; return true; Loading Loading @@ -824,7 +834,12 @@ public class PipTransition extends PipTransitionController { /** Computes destination bounds in old rotation and updates source hint rect if available. */ /** Computes destination bounds in old rotation and updates source hint rect if available. */ private void computeEnterPipRotatedBounds(int rotationDelta, int startRotation, int endRotation, private void computeEnterPipRotatedBounds(int rotationDelta, int startRotation, int endRotation, TaskInfo taskInfo, Rect outDestinationBounds, @Nullable Rect outSourceHintRect) { TaskInfo taskInfo, Rect outDestinationBounds, @Nullable Rect outSourceHintRect) { mPipBoundsState.getDisplayLayout().rotateTo(mContext.getResources(), endRotation); DisplayLayout layoutCopy = mPipBoundsState.getDisplayLayout(); layoutCopy.rotateTo(mContext.getResources(), endRotation); mPipBoundsState.setDisplayLayout(layoutCopy); mPipSizeSpecHandler.setDisplayLayout(layoutCopy); final Rect displayBounds = mPipBoundsState.getDisplayBounds(); final Rect displayBounds = mPipBoundsState.getDisplayBounds(); outDestinationBounds.set(mPipBoundsAlgorithm.getEntryDestinationBounds()); outDestinationBounds.set(mPipBoundsAlgorithm.getEntryDestinationBounds()); // Transform the destination bounds to current display coordinates. // Transform the destination bounds to current display coordinates. Loading Loading
libs/WindowManager/Shell/src/com/android/wm/shell/dagger/TvPipModule.java +6 −4 Original line number Original line Diff line number Diff line Loading @@ -206,6 +206,7 @@ public abstract class TvPipModule { TvPipMenuController tvPipMenuController, TvPipMenuController tvPipMenuController, SyncTransactionQueue syncTransactionQueue, SyncTransactionQueue syncTransactionQueue, TvPipBoundsState tvPipBoundsState, TvPipBoundsState tvPipBoundsState, PipSizeSpecHandler pipSizeSpecHandler, PipTransitionState pipTransitionState, PipTransitionState pipTransitionState, TvPipBoundsAlgorithm tvPipBoundsAlgorithm, TvPipBoundsAlgorithm tvPipBoundsAlgorithm, PipAnimationController pipAnimationController, PipAnimationController pipAnimationController, Loading @@ -217,10 +218,11 @@ public abstract class TvPipModule { PipUiEventLogger pipUiEventLogger, ShellTaskOrganizer shellTaskOrganizer, PipUiEventLogger pipUiEventLogger, ShellTaskOrganizer shellTaskOrganizer, @ShellMainThread ShellExecutor mainExecutor) { @ShellMainThread ShellExecutor mainExecutor) { return new TvPipTaskOrganizer(context, return new TvPipTaskOrganizer(context, syncTransactionQueue, pipTransitionState, tvPipBoundsState, tvPipBoundsAlgorithm, syncTransactionQueue, pipTransitionState, tvPipBoundsState, pipSizeSpecHandler, tvPipMenuController, pipAnimationController, pipSurfaceTransactionHelper, tvPipBoundsAlgorithm, tvPipMenuController, pipAnimationController, pipTransitionController, pipParamsChangedForwarder, splitScreenControllerOptional, pipSurfaceTransactionHelper, pipTransitionController, pipParamsChangedForwarder, displayController, pipUiEventLogger, shellTaskOrganizer, mainExecutor); splitScreenControllerOptional, displayController, pipUiEventLogger, shellTaskOrganizer, mainExecutor); } } @WMSingleton @WMSingleton Loading
libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellModule.java +11 −8 Original line number Original line Diff line number Diff line Loading @@ -442,6 +442,7 @@ public abstract class WMShellModule { SyncTransactionQueue syncTransactionQueue, SyncTransactionQueue syncTransactionQueue, PipTransitionState pipTransitionState, PipTransitionState pipTransitionState, PipBoundsState pipBoundsState, PipBoundsState pipBoundsState, PipSizeSpecHandler pipSizeSpecHandler, PipBoundsAlgorithm pipBoundsAlgorithm, PipBoundsAlgorithm pipBoundsAlgorithm, PhonePipMenuController menuPhoneController, PhonePipMenuController menuPhoneController, PipAnimationController pipAnimationController, PipAnimationController pipAnimationController, Loading @@ -453,10 +454,11 @@ public abstract class WMShellModule { PipUiEventLogger pipUiEventLogger, ShellTaskOrganizer shellTaskOrganizer, PipUiEventLogger pipUiEventLogger, ShellTaskOrganizer shellTaskOrganizer, @ShellMainThread ShellExecutor mainExecutor) { @ShellMainThread ShellExecutor mainExecutor) { return new PipTaskOrganizer(context, return new PipTaskOrganizer(context, syncTransactionQueue, pipTransitionState, pipBoundsState, pipBoundsAlgorithm, syncTransactionQueue, pipTransitionState, pipBoundsState, pipSizeSpecHandler, menuPhoneController, pipAnimationController, pipSurfaceTransactionHelper, pipBoundsAlgorithm, menuPhoneController, pipAnimationController, pipTransitionController, pipParamsChangedForwarder, splitScreenControllerOptional, pipSurfaceTransactionHelper, pipTransitionController, pipParamsChangedForwarder, displayController, pipUiEventLogger, shellTaskOrganizer, mainExecutor); splitScreenControllerOptional, displayController, pipUiEventLogger, shellTaskOrganizer, mainExecutor); } } @WMSingleton @WMSingleton Loading @@ -471,13 +473,14 @@ public abstract class WMShellModule { static PipTransitionController providePipTransitionController(Context context, static PipTransitionController providePipTransitionController(Context context, ShellInit shellInit, ShellTaskOrganizer shellTaskOrganizer, Transitions transitions, ShellInit shellInit, ShellTaskOrganizer shellTaskOrganizer, Transitions transitions, PipAnimationController pipAnimationController, PipBoundsAlgorithm pipBoundsAlgorithm, PipAnimationController pipAnimationController, PipBoundsAlgorithm pipBoundsAlgorithm, PipBoundsState pipBoundsState, PipTransitionState pipTransitionState, PipBoundsState pipBoundsState, PipSizeSpecHandler pipSizeSpecHandler, PhonePipMenuController pipMenuController, PipTransitionState pipTransitionState, PhonePipMenuController pipMenuController, PipSurfaceTransactionHelper pipSurfaceTransactionHelper, PipSurfaceTransactionHelper pipSurfaceTransactionHelper, Optional<SplitScreenController> splitScreenOptional) { Optional<SplitScreenController> splitScreenOptional) { return new PipTransition(context, shellInit, shellTaskOrganizer, transitions, return new PipTransition(context, shellInit, shellTaskOrganizer, transitions, pipBoundsState, pipTransitionState, pipMenuController, pipBoundsAlgorithm, pipBoundsState, pipSizeSpecHandler, pipTransitionState, pipMenuController, pipAnimationController, pipSurfaceTransactionHelper, splitScreenOptional); pipBoundsAlgorithm, pipAnimationController, pipSurfaceTransactionHelper, splitScreenOptional); } } @WMSingleton @WMSingleton Loading
libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipBoundsState.java +2 −2 Original line number Original line Diff line number Diff line Loading @@ -311,10 +311,10 @@ public class PipBoundsState { mDisplayLayout.set(displayLayout); mDisplayLayout.set(displayLayout); } } /** Get the display layout. */ /** Get a copy of the display layout. */ @NonNull @NonNull public DisplayLayout getDisplayLayout() { public DisplayLayout getDisplayLayout() { return mDisplayLayout; return new DisplayLayout(mDisplayLayout); } } @VisibleForTesting @VisibleForTesting Loading
libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTaskOrganizer.java +11 −1 Original line number Original line Diff line number Diff line Loading @@ -79,11 +79,13 @@ import com.android.wm.shell.R; import com.android.wm.shell.ShellTaskOrganizer; import com.android.wm.shell.ShellTaskOrganizer; import com.android.wm.shell.animation.Interpolators; import com.android.wm.shell.animation.Interpolators; import com.android.wm.shell.common.DisplayController; import com.android.wm.shell.common.DisplayController; import com.android.wm.shell.common.DisplayLayout; import com.android.wm.shell.common.ScreenshotUtils; import com.android.wm.shell.common.ScreenshotUtils; import com.android.wm.shell.common.ShellExecutor; import com.android.wm.shell.common.ShellExecutor; import com.android.wm.shell.common.SyncTransactionQueue; import com.android.wm.shell.common.SyncTransactionQueue; import com.android.wm.shell.common.annotations.ShellMainThread; import com.android.wm.shell.common.annotations.ShellMainThread; import com.android.wm.shell.pip.phone.PipMotionHelper; import com.android.wm.shell.pip.phone.PipMotionHelper; import com.android.wm.shell.pip.phone.PipSizeSpecHandler; import com.android.wm.shell.protolog.ShellProtoLogGroup; import com.android.wm.shell.protolog.ShellProtoLogGroup; import com.android.wm.shell.splitscreen.SplitScreenController; import com.android.wm.shell.splitscreen.SplitScreenController; import com.android.wm.shell.transition.Transitions; import com.android.wm.shell.transition.Transitions; Loading Loading @@ -126,6 +128,7 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener, private final Context mContext; private final Context mContext; private final SyncTransactionQueue mSyncTransactionQueue; private final SyncTransactionQueue mSyncTransactionQueue; private final PipBoundsState mPipBoundsState; private final PipBoundsState mPipBoundsState; private final PipSizeSpecHandler mPipSizeSpecHandler; private final PipBoundsAlgorithm mPipBoundsAlgorithm; private final PipBoundsAlgorithm mPipBoundsAlgorithm; private final @NonNull PipMenuController mPipMenuController; private final @NonNull PipMenuController mPipMenuController; private final PipAnimationController mPipAnimationController; private final PipAnimationController mPipAnimationController; Loading Loading @@ -313,6 +316,7 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener, @NonNull SyncTransactionQueue syncTransactionQueue, @NonNull SyncTransactionQueue syncTransactionQueue, @NonNull PipTransitionState pipTransitionState, @NonNull PipTransitionState pipTransitionState, @NonNull PipBoundsState pipBoundsState, @NonNull PipBoundsState pipBoundsState, @NonNull PipSizeSpecHandler pipSizeSpecHandler, @NonNull PipBoundsAlgorithm boundsHandler, @NonNull PipBoundsAlgorithm boundsHandler, @NonNull PipMenuController pipMenuController, @NonNull PipMenuController pipMenuController, @NonNull PipAnimationController pipAnimationController, @NonNull PipAnimationController pipAnimationController, Loading @@ -328,6 +332,7 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener, mSyncTransactionQueue = syncTransactionQueue; mSyncTransactionQueue = syncTransactionQueue; mPipTransitionState = pipTransitionState; mPipTransitionState = pipTransitionState; mPipBoundsState = pipBoundsState; mPipBoundsState = pipBoundsState; mPipSizeSpecHandler = pipSizeSpecHandler; mPipBoundsAlgorithm = boundsHandler; mPipBoundsAlgorithm = boundsHandler; mPipMenuController = pipMenuController; mPipMenuController = pipMenuController; mPipTransitionController = pipTransitionController; mPipTransitionController = pipTransitionController; Loading Loading @@ -1601,7 +1606,12 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener, private @Nullable Rect computeRotatedBounds(int rotationDelta, int direction, private @Nullable Rect computeRotatedBounds(int rotationDelta, int direction, Rect outDestinationBounds, Rect sourceHintRect) { Rect outDestinationBounds, Rect sourceHintRect) { if (direction == TRANSITION_DIRECTION_TO_PIP) { if (direction == TRANSITION_DIRECTION_TO_PIP) { mPipBoundsState.getDisplayLayout().rotateTo(mContext.getResources(), mNextRotation); DisplayLayout layoutCopy = mPipBoundsState.getDisplayLayout(); layoutCopy.rotateTo(mContext.getResources(), mNextRotation); mPipBoundsState.setDisplayLayout(layoutCopy); mPipSizeSpecHandler.setDisplayLayout(layoutCopy); final Rect displayBounds = mPipBoundsState.getDisplayBounds(); final Rect displayBounds = mPipBoundsState.getDisplayBounds(); outDestinationBounds.set(mPipBoundsAlgorithm.getEntryDestinationBounds()); outDestinationBounds.set(mPipBoundsAlgorithm.getEntryDestinationBounds()); // Transform the destination bounds to current display coordinates. // Transform the destination bounds to current display coordinates. Loading
libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTransition.java +17 −2 Original line number Original line Diff line number Diff line Loading @@ -65,6 +65,8 @@ import androidx.annotation.Nullable; import com.android.internal.protolog.common.ProtoLog; import com.android.internal.protolog.common.ProtoLog; import com.android.wm.shell.R; import com.android.wm.shell.R; import com.android.wm.shell.ShellTaskOrganizer; import com.android.wm.shell.ShellTaskOrganizer; import com.android.wm.shell.common.DisplayLayout; import com.android.wm.shell.pip.phone.PipSizeSpecHandler; import com.android.wm.shell.protolog.ShellProtoLogGroup; import com.android.wm.shell.protolog.ShellProtoLogGroup; import com.android.wm.shell.splitscreen.SplitScreenController; import com.android.wm.shell.splitscreen.SplitScreenController; import com.android.wm.shell.sysui.ShellInit; import com.android.wm.shell.sysui.ShellInit; Loading @@ -83,6 +85,7 @@ public class PipTransition extends PipTransitionController { private final Context mContext; private final Context mContext; private final PipTransitionState mPipTransitionState; private final PipTransitionState mPipTransitionState; private final PipSizeSpecHandler mPipSizeSpecHandler; private final int mEnterExitAnimationDuration; private final int mEnterExitAnimationDuration; private final PipSurfaceTransactionHelper mSurfaceTransactionHelper; private final PipSurfaceTransactionHelper mSurfaceTransactionHelper; private final Optional<SplitScreenController> mSplitScreenOptional; private final Optional<SplitScreenController> mSplitScreenOptional; Loading Loading @@ -113,6 +116,7 @@ public class PipTransition extends PipTransitionController { @NonNull ShellTaskOrganizer shellTaskOrganizer, @NonNull ShellTaskOrganizer shellTaskOrganizer, @NonNull Transitions transitions, @NonNull Transitions transitions, PipBoundsState pipBoundsState, PipBoundsState pipBoundsState, PipSizeSpecHandler pipSizeSpecHandler, PipTransitionState pipTransitionState, PipTransitionState pipTransitionState, PipMenuController pipMenuController, PipMenuController pipMenuController, PipBoundsAlgorithm pipBoundsAlgorithm, PipBoundsAlgorithm pipBoundsAlgorithm, Loading @@ -123,6 +127,7 @@ public class PipTransition extends PipTransitionController { pipBoundsAlgorithm, pipAnimationController); pipBoundsAlgorithm, pipAnimationController); mContext = context; mContext = context; mPipTransitionState = pipTransitionState; mPipTransitionState = pipTransitionState; mPipSizeSpecHandler = pipSizeSpecHandler; mEnterExitAnimationDuration = context.getResources() mEnterExitAnimationDuration = context.getResources() .getInteger(R.integer.config_pipResizeAnimationDuration); .getInteger(R.integer.config_pipResizeAnimationDuration); mSurfaceTransactionHelper = pipSurfaceTransactionHelper; mSurfaceTransactionHelper = pipSurfaceTransactionHelper; Loading Loading @@ -308,7 +313,12 @@ public class PipTransition extends PipTransitionController { // initial state under the new rotation. // initial state under the new rotation. int rotationDelta = deltaRotation(startRotation, endRotation); int rotationDelta = deltaRotation(startRotation, endRotation); if (rotationDelta != Surface.ROTATION_0) { if (rotationDelta != Surface.ROTATION_0) { mPipBoundsState.getDisplayLayout().rotateTo(mContext.getResources(), endRotation); DisplayLayout layoutCopy = mPipBoundsState.getDisplayLayout(); layoutCopy.rotateTo(mContext.getResources(), endRotation); mPipBoundsState.setDisplayLayout(layoutCopy); mPipSizeSpecHandler.setDisplayLayout(layoutCopy); final Rect destinationBounds = mPipBoundsAlgorithm.getEntryDestinationBounds(); final Rect destinationBounds = mPipBoundsAlgorithm.getEntryDestinationBounds(); wct.setBounds(mRequestedEnterTask, destinationBounds); wct.setBounds(mRequestedEnterTask, destinationBounds); return true; return true; Loading Loading @@ -824,7 +834,12 @@ public class PipTransition extends PipTransitionController { /** Computes destination bounds in old rotation and updates source hint rect if available. */ /** Computes destination bounds in old rotation and updates source hint rect if available. */ private void computeEnterPipRotatedBounds(int rotationDelta, int startRotation, int endRotation, private void computeEnterPipRotatedBounds(int rotationDelta, int startRotation, int endRotation, TaskInfo taskInfo, Rect outDestinationBounds, @Nullable Rect outSourceHintRect) { TaskInfo taskInfo, Rect outDestinationBounds, @Nullable Rect outSourceHintRect) { mPipBoundsState.getDisplayLayout().rotateTo(mContext.getResources(), endRotation); DisplayLayout layoutCopy = mPipBoundsState.getDisplayLayout(); layoutCopy.rotateTo(mContext.getResources(), endRotation); mPipBoundsState.setDisplayLayout(layoutCopy); mPipSizeSpecHandler.setDisplayLayout(layoutCopy); final Rect displayBounds = mPipBoundsState.getDisplayBounds(); final Rect displayBounds = mPipBoundsState.getDisplayBounds(); outDestinationBounds.set(mPipBoundsAlgorithm.getEntryDestinationBounds()); outDestinationBounds.set(mPipBoundsAlgorithm.getEntryDestinationBounds()); // Transform the destination bounds to current display coordinates. // Transform the destination bounds to current display coordinates. Loading