Loading libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java +1 −2 Original line number Diff line number Diff line Loading @@ -2155,8 +2155,7 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, wct.setForceTranslucent(mRootTaskInfo.token, translucent); } /** Callback when split roots visiblility changed. * NOTICE: This only be called on legacy transition. */ /** Callback when split roots visiblility changed. */ @Override public void onStageVisibilityChanged(StageTaskListener stageListener) { // If split didn't active, just ignore this callback because we should already did these Loading libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageTaskListener.java +11 −17 Original line number Diff line number Diff line Loading @@ -240,12 +240,20 @@ public class StageTaskListener implements ShellTaskOrganizer.TaskListener { @Override @CallSuper public void onTaskInfoChanged(ActivityManager.RunningTaskInfo taskInfo) { ProtoLog.d(WM_SHELL_SPLIT_SCREEN, "onTaskInfoChanged: taskId=%d taskAct=%s " + "stageId=%s", taskInfo.taskId, taskInfo.baseActivity, stageTypeToString(mId)); ProtoLog.d(WM_SHELL_SPLIT_SCREEN, "onTaskInfoChanged: taskId=%d vis=%b reqVis=%b baseAct=%s stageId=%s", taskInfo.taskId, taskInfo.isVisible, taskInfo.isVisibleRequested, taskInfo.baseActivity, stageTypeToString(mId)); mWindowDecorViewModel.ifPresent(viewModel -> viewModel.onTaskInfoChanged(taskInfo)); if (mRootTaskInfo.taskId == taskInfo.taskId) { mRootTaskInfo = taskInfo; boolean isVisible = taskInfo.isVisible && taskInfo.isVisibleRequested; if (mVisible != isVisible) { ProtoLog.d(WM_SHELL_SPLIT_SCREEN, "onTaskInfoChanged: currentVis=%b newVis=%b", mVisible, isVisible); mVisible = isVisible; mCallbacks.onStageVisibilityChanged(this); } } else if (taskInfo.parentTaskId == mRootTaskInfo.taskId) { if (!taskInfo.supportsMultiWindow || !ArrayUtils.contains(CONTROLLED_ACTIVITY_TYPES, taskInfo.getActivityType()) Loading @@ -260,7 +268,6 @@ public class StageTaskListener implements ShellTaskOrganizer.TaskListener { return; } mChildrenTaskInfo.put(taskInfo.taskId, taskInfo); mVisible = isStageVisible(); mCallbacks.onChildTaskStatusChanged(this, taskInfo.taskId, true /* present */, taskInfo.isVisible && taskInfo.isVisibleRequested); } else { Loading Loading @@ -309,19 +316,6 @@ public class StageTaskListener implements ShellTaskOrganizer.TaskListener { t.reparent(sc, findTaskSurface(taskId)); } /** * Checks against all children task info and return true if any are marked as visible. */ private boolean isStageVisible() { for (int i = mChildrenTaskInfo.size() - 1; i >= 0; --i) { if (mChildrenTaskInfo.valueAt(i).isVisible && mChildrenTaskInfo.valueAt(i).isVisibleRequested) { return true; } } return false; } private SurfaceControl findTaskSurface(int taskId) { if (mRootTaskInfo.taskId == taskId) { return mRootLeash; Loading services/core/java/com/android/server/wm/Task.java +3 −0 Original line number Diff line number Diff line Loading @@ -3864,6 +3864,9 @@ class Task extends TaskFragment { if (mLaunchAdjacentDisabled) { pw.println(prefix + "mLaunchAdjacentDisabled=true"); } if (mReparentLeafTaskIfRelaunch) { pw.println(prefix + "mReparentLeafTaskIfRelaunch=true"); } } @Override Loading services/core/java/com/android/server/wm/TaskDisplayArea.java +5 −0 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ import static android.content.res.Configuration.ORIENTATION_LANDSCAPE; import static android.view.Display.INVALID_DISPLAY; import static com.android.internal.protolog.WmProtoLogGroups.WM_DEBUG_ORIENTATION; import static com.android.internal.protolog.WmProtoLogGroups.WM_DEBUG_TASKS; import static com.android.server.wm.ActivityRecord.State.RESUMED; import static com.android.server.wm.ActivityTaskManagerService.TAG_ROOT_TASK; import static com.android.server.wm.DisplayContent.alwaysCreateRootTask; Loading Loading @@ -918,6 +919,10 @@ final class TaskDisplayArea extends DisplayArea<WindowContainer> { if (candidateTask.getParent() == null) { addChild(candidateTask, position); } else { if (candidateTask.getRootTask().mReparentLeafTaskIfRelaunch) { ProtoLog.d(WM_DEBUG_TASKS, "Reparenting to display area on relaunch: " + "rootTaskId=%d toTop=%b", candidateTask.mTaskId, onTop); } candidateTask.reparent(this, onTop); } } Loading Loading
libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java +1 −2 Original line number Diff line number Diff line Loading @@ -2155,8 +2155,7 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, wct.setForceTranslucent(mRootTaskInfo.token, translucent); } /** Callback when split roots visiblility changed. * NOTICE: This only be called on legacy transition. */ /** Callback when split roots visiblility changed. */ @Override public void onStageVisibilityChanged(StageTaskListener stageListener) { // If split didn't active, just ignore this callback because we should already did these Loading
libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageTaskListener.java +11 −17 Original line number Diff line number Diff line Loading @@ -240,12 +240,20 @@ public class StageTaskListener implements ShellTaskOrganizer.TaskListener { @Override @CallSuper public void onTaskInfoChanged(ActivityManager.RunningTaskInfo taskInfo) { ProtoLog.d(WM_SHELL_SPLIT_SCREEN, "onTaskInfoChanged: taskId=%d taskAct=%s " + "stageId=%s", taskInfo.taskId, taskInfo.baseActivity, stageTypeToString(mId)); ProtoLog.d(WM_SHELL_SPLIT_SCREEN, "onTaskInfoChanged: taskId=%d vis=%b reqVis=%b baseAct=%s stageId=%s", taskInfo.taskId, taskInfo.isVisible, taskInfo.isVisibleRequested, taskInfo.baseActivity, stageTypeToString(mId)); mWindowDecorViewModel.ifPresent(viewModel -> viewModel.onTaskInfoChanged(taskInfo)); if (mRootTaskInfo.taskId == taskInfo.taskId) { mRootTaskInfo = taskInfo; boolean isVisible = taskInfo.isVisible && taskInfo.isVisibleRequested; if (mVisible != isVisible) { ProtoLog.d(WM_SHELL_SPLIT_SCREEN, "onTaskInfoChanged: currentVis=%b newVis=%b", mVisible, isVisible); mVisible = isVisible; mCallbacks.onStageVisibilityChanged(this); } } else if (taskInfo.parentTaskId == mRootTaskInfo.taskId) { if (!taskInfo.supportsMultiWindow || !ArrayUtils.contains(CONTROLLED_ACTIVITY_TYPES, taskInfo.getActivityType()) Loading @@ -260,7 +268,6 @@ public class StageTaskListener implements ShellTaskOrganizer.TaskListener { return; } mChildrenTaskInfo.put(taskInfo.taskId, taskInfo); mVisible = isStageVisible(); mCallbacks.onChildTaskStatusChanged(this, taskInfo.taskId, true /* present */, taskInfo.isVisible && taskInfo.isVisibleRequested); } else { Loading Loading @@ -309,19 +316,6 @@ public class StageTaskListener implements ShellTaskOrganizer.TaskListener { t.reparent(sc, findTaskSurface(taskId)); } /** * Checks against all children task info and return true if any are marked as visible. */ private boolean isStageVisible() { for (int i = mChildrenTaskInfo.size() - 1; i >= 0; --i) { if (mChildrenTaskInfo.valueAt(i).isVisible && mChildrenTaskInfo.valueAt(i).isVisibleRequested) { return true; } } return false; } private SurfaceControl findTaskSurface(int taskId) { if (mRootTaskInfo.taskId == taskId) { return mRootLeash; Loading
services/core/java/com/android/server/wm/Task.java +3 −0 Original line number Diff line number Diff line Loading @@ -3864,6 +3864,9 @@ class Task extends TaskFragment { if (mLaunchAdjacentDisabled) { pw.println(prefix + "mLaunchAdjacentDisabled=true"); } if (mReparentLeafTaskIfRelaunch) { pw.println(prefix + "mReparentLeafTaskIfRelaunch=true"); } } @Override Loading
services/core/java/com/android/server/wm/TaskDisplayArea.java +5 −0 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ import static android.content.res.Configuration.ORIENTATION_LANDSCAPE; import static android.view.Display.INVALID_DISPLAY; import static com.android.internal.protolog.WmProtoLogGroups.WM_DEBUG_ORIENTATION; import static com.android.internal.protolog.WmProtoLogGroups.WM_DEBUG_TASKS; import static com.android.server.wm.ActivityRecord.State.RESUMED; import static com.android.server.wm.ActivityTaskManagerService.TAG_ROOT_TASK; import static com.android.server.wm.DisplayContent.alwaysCreateRootTask; Loading Loading @@ -918,6 +919,10 @@ final class TaskDisplayArea extends DisplayArea<WindowContainer> { if (candidateTask.getParent() == null) { addChild(candidateTask, position); } else { if (candidateTask.getRootTask().mReparentLeafTaskIfRelaunch) { ProtoLog.d(WM_DEBUG_TASKS, "Reparenting to display area on relaunch: " + "rootTaskId=%d toTop=%b", candidateTask.mTaskId, onTop); } candidateTask.reparent(this, onTop); } } Loading