Loading quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java +0 −5 Original line number Original line Diff line number Diff line Loading @@ -1809,13 +1809,8 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>, mGestureState.updateLastStartedTaskId(taskId); mGestureState.updateLastStartedTaskId(taskId); boolean hasTaskPreviouslyAppeared = mGestureState.getPreviouslyAppearedTaskIds() boolean hasTaskPreviouslyAppeared = mGestureState.getPreviouslyAppearedTaskIds() .contains(taskId); .contains(taskId); boolean isOldTaskSplit = LauncherSplitScreenListener.INSTANCE.getNoCreate() .getRunningSplitTaskIds().length > 0; nextTask.launchTask(success -> { nextTask.launchTask(success -> { resultCallback.accept(success); resultCallback.accept(success); if (isOldTaskSplit) { SystemUiProxy.INSTANCE.getNoCreate().exitSplitScreen(taskId); } if (success) { if (success) { if (hasTaskPreviouslyAppeared) { if (hasTaskPreviouslyAppeared) { onRestartPreviouslyAppearedTask(); onRestartPreviouslyAppearedTask(); Loading quickstep/src/com/android/quickstep/RecentTasksList.java +15 −2 Original line number Original line Diff line number Diff line Loading @@ -27,12 +27,14 @@ import android.util.SparseBooleanArray; import androidx.annotation.VisibleForTesting; import androidx.annotation.VisibleForTesting; import com.android.quickstep.util.GroupTask; import com.android.launcher3.util.LooperExecutor; import com.android.launcher3.util.LooperExecutor; import com.android.systemui.shared.recents.model.GroupTask; import com.android.launcher3.util.SplitConfigurationOptions; import com.android.systemui.shared.recents.model.Task; import com.android.systemui.shared.recents.model.Task; import com.android.systemui.shared.system.KeyguardManagerCompat; import com.android.systemui.shared.system.KeyguardManagerCompat; import com.android.wm.shell.recents.IRecentTasksListener; import com.android.wm.shell.recents.IRecentTasksListener; import com.android.wm.shell.util.GroupedRecentTaskInfo; import com.android.wm.shell.util.GroupedRecentTaskInfo; import com.android.wm.shell.util.StagedSplitBounds; import java.util.ArrayList; import java.util.ArrayList; import java.util.Collections; import java.util.Collections; Loading Loading @@ -192,12 +194,23 @@ public class RecentTasksList { tmpLockedUsers.get(task2Key.userId) /* isLocked */); tmpLockedUsers.get(task2Key.userId) /* isLocked */); task2.setLastSnapshotData(taskInfo2); task2.setLastSnapshotData(taskInfo2); } } allTasks.add(new GroupTask(task1, task2)); final SplitConfigurationOptions.StagedSplitBounds launcherSplitBounds = convertSplitBounds(rawTask.mStagedSplitBounds); allTasks.add(new GroupTask(task1, task2, launcherSplitBounds)); } } return allTasks; return allTasks; } } private SplitConfigurationOptions.StagedSplitBounds convertSplitBounds( StagedSplitBounds shellSplitBounds) { return shellSplitBounds == null ? null : new SplitConfigurationOptions.StagedSplitBounds( shellSplitBounds.leftTopBounds, shellSplitBounds.rightBottomBounds, shellSplitBounds.leftTopTaskId, shellSplitBounds.rightBottomTaskId); } private ArrayList<GroupTask> copyOf(ArrayList<GroupTask> tasks) { private ArrayList<GroupTask> copyOf(ArrayList<GroupTask> tasks) { ArrayList<GroupTask> newTasks = new ArrayList<>(); ArrayList<GroupTask> newTasks = new ArrayList<>(); for (int i = 0; i < tasks.size(); i++) { for (int i = 0; i < tasks.size(); i++) { Loading quickstep/src/com/android/quickstep/RecentsModel.java +1 −1 Original line number Original line Diff line number Diff line Loading @@ -34,7 +34,7 @@ import com.android.launcher3.icons.IconProvider; import com.android.launcher3.icons.IconProvider.IconChangeListener; import com.android.launcher3.icons.IconProvider.IconChangeListener; import com.android.launcher3.util.Executors.SimpleThreadFactory; import com.android.launcher3.util.Executors.SimpleThreadFactory; import com.android.launcher3.util.MainThreadInitializedObject; import com.android.launcher3.util.MainThreadInitializedObject; import com.android.systemui.shared.recents.model.GroupTask; import com.android.quickstep.util.GroupTask; import com.android.systemui.shared.recents.model.Task; import com.android.systemui.shared.recents.model.Task; import com.android.systemui.shared.recents.model.ThumbnailData; import com.android.systemui.shared.recents.model.ThumbnailData; import com.android.systemui.shared.system.ActivityManagerWrapper; import com.android.systemui.shared.system.ActivityManagerWrapper; Loading quickstep/src/com/android/quickstep/RemoteTargetGluer.java +5 −5 Original line number Original line Diff line number Diff line Loading @@ -20,7 +20,7 @@ import android.content.Context; import androidx.annotation.Nullable; import androidx.annotation.Nullable; import com.android.launcher3.util.SplitConfigurationOptions; import com.android.launcher3.util.SplitConfigurationOptions.StagedSplitBounds; import com.android.quickstep.util.AnimatorControllerWithResistance; import com.android.quickstep.util.AnimatorControllerWithResistance; import com.android.quickstep.util.LauncherSplitScreenListener; import com.android.quickstep.util.LauncherSplitScreenListener; import com.android.quickstep.util.TaskViewSimulator; import com.android.quickstep.util.TaskViewSimulator; Loading @@ -33,7 +33,7 @@ import com.android.systemui.shared.system.RemoteAnimationTargetCompat; */ */ public class RemoteTargetGluer { public class RemoteTargetGluer { private RemoteTargetHandle[] mRemoteTargetHandles; private RemoteTargetHandle[] mRemoteTargetHandles; private SplitConfigurationOptions.StagedSplitBounds mStagedSplitBounds; private StagedSplitBounds mStagedSplitBounds; /** /** * Use this constructor if remote targets are split-screen independent * Use this constructor if remote targets are split-screen independent Loading Loading @@ -108,9 +108,9 @@ public class RemoteTargetGluer { primaryTaskTarget = targets.findTask(splitIds[0]); primaryTaskTarget = targets.findTask(splitIds[0]); secondaryTaskTarget = targets.findTask(splitIds[1]); secondaryTaskTarget = targets.findTask(splitIds[1]); mStagedSplitBounds = new SplitConfigurationOptions.StagedSplitBounds( mStagedSplitBounds = new StagedSplitBounds( primaryTaskTarget.screenSpaceBounds, primaryTaskTarget.screenSpaceBounds, secondaryTaskTarget.screenSpaceBounds); secondaryTaskTarget.screenSpaceBounds, splitIds[0], splitIds[1]); mRemoteTargetHandles[0].mTransformParams.setTargetSet( mRemoteTargetHandles[0].mTransformParams.setTargetSet( createRemoteAnimationTargetsForTarget(primaryTaskTarget, targets)); createRemoteAnimationTargetsForTarget(primaryTaskTarget, targets)); mRemoteTargetHandles[0].mTaskViewSimulator.setPreview(primaryTaskTarget, mRemoteTargetHandles[0].mTaskViewSimulator.setPreview(primaryTaskTarget, Loading @@ -135,7 +135,7 @@ public class RemoteTargetGluer { return mRemoteTargetHandles; return mRemoteTargetHandles; } } public SplitConfigurationOptions.StagedSplitBounds getStagedSplitBounds() { public StagedSplitBounds getStagedSplitBounds() { return mStagedSplitBounds; return mStagedSplitBounds; } } Loading quickstep/src/com/android/quickstep/SystemUiProxy.java +0 −47 Original line number Original line Diff line number Diff line Loading @@ -572,53 +572,6 @@ public class SystemUiProxy implements ISystemUiProxy, mPendingSplitScreenListener = null; mPendingSplitScreenListener = null; } } public void setSideStageVisibility(boolean visible) { if (mSplitScreen != null) { try { mSplitScreen.setSideStageVisibility(visible); } catch (RemoteException e) { Log.w(TAG, "Failed call setSideStageVisibility"); } } } /** * To be called whenever the user exits out of split screen apps (either by launching another * app or by swiping home) * @param topTaskId The taskId of the new app that was launched. System will then move this task * to the front of what the user sees while removing all other split stages. * If swiping to home (or there is no task to put at the top), can pass in -1. */ public void exitSplitScreen(int topTaskId) { if (mSplitScreen != null) { try { mSplitScreen.exitSplitScreen(topTaskId); } catch (RemoteException e) { Log.w(TAG, "Failed call exitSplitScreen"); } } } public void exitSplitScreenOnHide(boolean exitSplitScreenOnHide) { if (mSplitScreen != null) { try { mSplitScreen.exitSplitScreenOnHide(exitSplitScreenOnHide); } catch (RemoteException e) { Log.w(TAG, "Failed call exitSplitScreen"); } } } public void startTask(int taskId, int stage, int position, Bundle options) { if (mSplitScreen != null) { try { mSplitScreen.startTask(taskId, stage, position, options); } catch (RemoteException e) { Log.w(TAG, "Failed call startTask"); } } } /** Start multiple tasks in split-screen simultaneously. */ /** Start multiple tasks in split-screen simultaneously. */ public void startTasks(int mainTaskId, Bundle mainOptions, int sideTaskId, Bundle sideOptions, public void startTasks(int mainTaskId, Bundle mainOptions, int sideTaskId, Bundle sideOptions, @SplitConfigurationOptions.StagePosition int sidePosition, @SplitConfigurationOptions.StagePosition int sidePosition, Loading Loading
quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java +0 −5 Original line number Original line Diff line number Diff line Loading @@ -1809,13 +1809,8 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>, mGestureState.updateLastStartedTaskId(taskId); mGestureState.updateLastStartedTaskId(taskId); boolean hasTaskPreviouslyAppeared = mGestureState.getPreviouslyAppearedTaskIds() boolean hasTaskPreviouslyAppeared = mGestureState.getPreviouslyAppearedTaskIds() .contains(taskId); .contains(taskId); boolean isOldTaskSplit = LauncherSplitScreenListener.INSTANCE.getNoCreate() .getRunningSplitTaskIds().length > 0; nextTask.launchTask(success -> { nextTask.launchTask(success -> { resultCallback.accept(success); resultCallback.accept(success); if (isOldTaskSplit) { SystemUiProxy.INSTANCE.getNoCreate().exitSplitScreen(taskId); } if (success) { if (success) { if (hasTaskPreviouslyAppeared) { if (hasTaskPreviouslyAppeared) { onRestartPreviouslyAppearedTask(); onRestartPreviouslyAppearedTask(); Loading
quickstep/src/com/android/quickstep/RecentTasksList.java +15 −2 Original line number Original line Diff line number Diff line Loading @@ -27,12 +27,14 @@ import android.util.SparseBooleanArray; import androidx.annotation.VisibleForTesting; import androidx.annotation.VisibleForTesting; import com.android.quickstep.util.GroupTask; import com.android.launcher3.util.LooperExecutor; import com.android.launcher3.util.LooperExecutor; import com.android.systemui.shared.recents.model.GroupTask; import com.android.launcher3.util.SplitConfigurationOptions; import com.android.systemui.shared.recents.model.Task; import com.android.systemui.shared.recents.model.Task; import com.android.systemui.shared.system.KeyguardManagerCompat; import com.android.systemui.shared.system.KeyguardManagerCompat; import com.android.wm.shell.recents.IRecentTasksListener; import com.android.wm.shell.recents.IRecentTasksListener; import com.android.wm.shell.util.GroupedRecentTaskInfo; import com.android.wm.shell.util.GroupedRecentTaskInfo; import com.android.wm.shell.util.StagedSplitBounds; import java.util.ArrayList; import java.util.ArrayList; import java.util.Collections; import java.util.Collections; Loading Loading @@ -192,12 +194,23 @@ public class RecentTasksList { tmpLockedUsers.get(task2Key.userId) /* isLocked */); tmpLockedUsers.get(task2Key.userId) /* isLocked */); task2.setLastSnapshotData(taskInfo2); task2.setLastSnapshotData(taskInfo2); } } allTasks.add(new GroupTask(task1, task2)); final SplitConfigurationOptions.StagedSplitBounds launcherSplitBounds = convertSplitBounds(rawTask.mStagedSplitBounds); allTasks.add(new GroupTask(task1, task2, launcherSplitBounds)); } } return allTasks; return allTasks; } } private SplitConfigurationOptions.StagedSplitBounds convertSplitBounds( StagedSplitBounds shellSplitBounds) { return shellSplitBounds == null ? null : new SplitConfigurationOptions.StagedSplitBounds( shellSplitBounds.leftTopBounds, shellSplitBounds.rightBottomBounds, shellSplitBounds.leftTopTaskId, shellSplitBounds.rightBottomTaskId); } private ArrayList<GroupTask> copyOf(ArrayList<GroupTask> tasks) { private ArrayList<GroupTask> copyOf(ArrayList<GroupTask> tasks) { ArrayList<GroupTask> newTasks = new ArrayList<>(); ArrayList<GroupTask> newTasks = new ArrayList<>(); for (int i = 0; i < tasks.size(); i++) { for (int i = 0; i < tasks.size(); i++) { Loading
quickstep/src/com/android/quickstep/RecentsModel.java +1 −1 Original line number Original line Diff line number Diff line Loading @@ -34,7 +34,7 @@ import com.android.launcher3.icons.IconProvider; import com.android.launcher3.icons.IconProvider.IconChangeListener; import com.android.launcher3.icons.IconProvider.IconChangeListener; import com.android.launcher3.util.Executors.SimpleThreadFactory; import com.android.launcher3.util.Executors.SimpleThreadFactory; import com.android.launcher3.util.MainThreadInitializedObject; import com.android.launcher3.util.MainThreadInitializedObject; import com.android.systemui.shared.recents.model.GroupTask; import com.android.quickstep.util.GroupTask; import com.android.systemui.shared.recents.model.Task; import com.android.systemui.shared.recents.model.Task; import com.android.systemui.shared.recents.model.ThumbnailData; import com.android.systemui.shared.recents.model.ThumbnailData; import com.android.systemui.shared.system.ActivityManagerWrapper; import com.android.systemui.shared.system.ActivityManagerWrapper; Loading
quickstep/src/com/android/quickstep/RemoteTargetGluer.java +5 −5 Original line number Original line Diff line number Diff line Loading @@ -20,7 +20,7 @@ import android.content.Context; import androidx.annotation.Nullable; import androidx.annotation.Nullable; import com.android.launcher3.util.SplitConfigurationOptions; import com.android.launcher3.util.SplitConfigurationOptions.StagedSplitBounds; import com.android.quickstep.util.AnimatorControllerWithResistance; import com.android.quickstep.util.AnimatorControllerWithResistance; import com.android.quickstep.util.LauncherSplitScreenListener; import com.android.quickstep.util.LauncherSplitScreenListener; import com.android.quickstep.util.TaskViewSimulator; import com.android.quickstep.util.TaskViewSimulator; Loading @@ -33,7 +33,7 @@ import com.android.systemui.shared.system.RemoteAnimationTargetCompat; */ */ public class RemoteTargetGluer { public class RemoteTargetGluer { private RemoteTargetHandle[] mRemoteTargetHandles; private RemoteTargetHandle[] mRemoteTargetHandles; private SplitConfigurationOptions.StagedSplitBounds mStagedSplitBounds; private StagedSplitBounds mStagedSplitBounds; /** /** * Use this constructor if remote targets are split-screen independent * Use this constructor if remote targets are split-screen independent Loading Loading @@ -108,9 +108,9 @@ public class RemoteTargetGluer { primaryTaskTarget = targets.findTask(splitIds[0]); primaryTaskTarget = targets.findTask(splitIds[0]); secondaryTaskTarget = targets.findTask(splitIds[1]); secondaryTaskTarget = targets.findTask(splitIds[1]); mStagedSplitBounds = new SplitConfigurationOptions.StagedSplitBounds( mStagedSplitBounds = new StagedSplitBounds( primaryTaskTarget.screenSpaceBounds, primaryTaskTarget.screenSpaceBounds, secondaryTaskTarget.screenSpaceBounds); secondaryTaskTarget.screenSpaceBounds, splitIds[0], splitIds[1]); mRemoteTargetHandles[0].mTransformParams.setTargetSet( mRemoteTargetHandles[0].mTransformParams.setTargetSet( createRemoteAnimationTargetsForTarget(primaryTaskTarget, targets)); createRemoteAnimationTargetsForTarget(primaryTaskTarget, targets)); mRemoteTargetHandles[0].mTaskViewSimulator.setPreview(primaryTaskTarget, mRemoteTargetHandles[0].mTaskViewSimulator.setPreview(primaryTaskTarget, Loading @@ -135,7 +135,7 @@ public class RemoteTargetGluer { return mRemoteTargetHandles; return mRemoteTargetHandles; } } public SplitConfigurationOptions.StagedSplitBounds getStagedSplitBounds() { public StagedSplitBounds getStagedSplitBounds() { return mStagedSplitBounds; return mStagedSplitBounds; } } Loading
quickstep/src/com/android/quickstep/SystemUiProxy.java +0 −47 Original line number Original line Diff line number Diff line Loading @@ -572,53 +572,6 @@ public class SystemUiProxy implements ISystemUiProxy, mPendingSplitScreenListener = null; mPendingSplitScreenListener = null; } } public void setSideStageVisibility(boolean visible) { if (mSplitScreen != null) { try { mSplitScreen.setSideStageVisibility(visible); } catch (RemoteException e) { Log.w(TAG, "Failed call setSideStageVisibility"); } } } /** * To be called whenever the user exits out of split screen apps (either by launching another * app or by swiping home) * @param topTaskId The taskId of the new app that was launched. System will then move this task * to the front of what the user sees while removing all other split stages. * If swiping to home (or there is no task to put at the top), can pass in -1. */ public void exitSplitScreen(int topTaskId) { if (mSplitScreen != null) { try { mSplitScreen.exitSplitScreen(topTaskId); } catch (RemoteException e) { Log.w(TAG, "Failed call exitSplitScreen"); } } } public void exitSplitScreenOnHide(boolean exitSplitScreenOnHide) { if (mSplitScreen != null) { try { mSplitScreen.exitSplitScreenOnHide(exitSplitScreenOnHide); } catch (RemoteException e) { Log.w(TAG, "Failed call exitSplitScreen"); } } } public void startTask(int taskId, int stage, int position, Bundle options) { if (mSplitScreen != null) { try { mSplitScreen.startTask(taskId, stage, position, options); } catch (RemoteException e) { Log.w(TAG, "Failed call startTask"); } } } /** Start multiple tasks in split-screen simultaneously. */ /** Start multiple tasks in split-screen simultaneously. */ public void startTasks(int mainTaskId, Bundle mainOptions, int sideTaskId, Bundle sideOptions, public void startTasks(int mainTaskId, Bundle mainOptions, int sideTaskId, Bundle sideOptions, @SplitConfigurationOptions.StagePosition int sidePosition, @SplitConfigurationOptions.StagePosition int sidePosition, Loading