Loading services/core/java/com/android/server/am/ActivityStack.java +2 −0 Original line number Diff line number Diff line Loading @@ -4564,6 +4564,8 @@ final class ActivityStack { addTask(task, toTop, false); if (mTaskPositioner != null) { mTaskPositioner.updateDefaultBounds(task, mTaskHistory, info.initialLayout); } else if (mBounds != null && task.mResizeable) { task.updateOverrideConfiguration(mBounds); } return task; } Loading services/core/java/com/android/server/am/ActivityStackSupervisor.java +11 −14 Original line number Diff line number Diff line Loading @@ -2971,31 +2971,29 @@ public final class ActivityStackSupervisor implements DisplayListener { } ActivityRecord r = stack.topRunningActivityLocked(null); final boolean resizeTasks = r != null && r.task.mResizeable; mTmpBounds.clear(); mTmpConfigs.clear(); if (resizeTasks) { ArrayList<TaskRecord> tasks = stack.getAllTasks(); for (int i = tasks.size() - 1; i >= 0; i--) { TaskRecord task = tasks.get(i); if (task.mResizeable) { if (stack.mStackId == FREEFORM_WORKSPACE_STACK_ID) { // For freeform stack we don't adjust the size of the tasks to match that of // the stack, but we do try to make sure the tasks are still contained with the // bounds of the stack. // For freeform stack we don't adjust the size of the tasks to match that // of the stack, but we do try to make sure the tasks are still contained // with the bounds of the stack. tempRect2.set(task.mBounds); fitWithinBounds(tempRect2, bounds); task.updateOverrideConfiguration(tempRect2); } else { task.updateOverrideConfiguration(bounds); } } mTmpConfigs.put(task.taskId, task.mOverrideConfig); mTmpBounds.put(task.taskId, task.mBounds); } } stack.mFullscreen = mWindowManager.resizeStack(stackId, bounds, resizeTasks, mTmpConfigs, mTmpBounds); stack.mFullscreen = mWindowManager.resizeStack(stackId, bounds, mTmpConfigs, mTmpBounds); if (stack.mStackId == DOCKED_STACK_ID) { // Dock stack funness...Yay! if (stack.mFullscreen) { Loading @@ -3008,7 +3006,6 @@ public final class ActivityStackSupervisor implements DisplayListener { } } final ArrayList<TaskRecord> tasks = stack.getAllTasks(); final int count = tasks.size(); for (int i = 0; i < count; i++) { moveTaskToStackLocked(tasks.get(i).taskId, Loading services/core/java/com/android/server/am/TaskRecord.java +1 −1 Original line number Diff line number Diff line Loading @@ -1235,7 +1235,7 @@ final class TaskRecord { if (stack == null || stack.mStackId == HOME_STACK_ID || stack.mStackId == FULLSCREEN_WORKSPACE_STACK_ID) { return null; return (mResizeable && stack != null) ? stack.mBounds : null; } else if (stack.mStackId == DOCKED_STACK_ID) { return stack.mBounds; } Loading services/core/java/com/android/server/wm/TaskStack.java +2 −10 Original line number Diff line number Diff line Loading @@ -118,30 +118,22 @@ public class TaskStack implements DimLayer.DimLayerUser { /** * Set the bounds of the stack and its containing tasks. * @param stackBounds New stack bounds. Passing in null sets the bounds to fullscreen. * @param resizeTasks If true, the tasks within the stack will also be resized. * @param configs Configuration for individual tasks, keyed by task id. * @param taskBounds Bounds for individual tasks, keyed by task id. * @return True if the stack bounds was changed. * */ boolean setBounds(Rect stackBounds, boolean resizeTasks, SparseArray<Configuration> configs, SparseArray<Rect> taskBounds) { boolean setBounds( Rect stackBounds, SparseArray<Configuration> configs, SparseArray<Rect> taskBounds) { if (!setBounds(stackBounds)) { return false; } if (!resizeTasks) { return true; } // Update bounds of containing tasks. for (int taskNdx = mTasks.size() - 1; taskNdx >= 0; --taskNdx) { final Task task = mTasks.get(taskNdx); Configuration config = configs.get(task.mTaskId); if (config != null) { Rect bounds = taskBounds.get(task.mTaskId); if (bounds == null) { bounds = stackBounds; } task.setBounds(bounds, config); } else { Slog.wtf(TAG, "No config for task: " + task + ", is there a mismatch with AM?"); Loading services/core/java/com/android/server/wm/WindowManagerService.java +2 −3 Original line number Diff line number Diff line Loading @@ -4632,12 +4632,11 @@ public class WindowManagerService extends IWindowManager.Stub * Re-sizes a stack and its containing tasks. * @param stackId Id of stack to resize. * @param bounds New stack bounds. Passing in null sets the bounds to fullscreen. * @param resizeTasks If true, the tasks within the stack will also be resized. * @param configs Configurations for tasks in the resized stack, keyed by task id. * @param taskBounds Bounds for tasks in the resized stack, keyed by task id. * @return True if the stack is now fullscreen. * */ public boolean resizeStack(int stackId, Rect bounds, boolean resizeTasks, public boolean resizeStack(int stackId, Rect bounds, SparseArray<Configuration> configs, SparseArray<Rect> taskBounds) { synchronized (mWindowMap) { final TaskStack stack = mStackIdToStack.get(stackId); Loading @@ -4645,7 +4644,7 @@ public class WindowManagerService extends IWindowManager.Stub throw new IllegalArgumentException("resizeStack: stackId " + stackId + " not found."); } if (stack.setBounds(bounds, resizeTasks, configs, taskBounds)) { if (stack.setBounds(bounds, configs, taskBounds)) { stack.resizeWindows(); stack.getDisplayContent().layoutNeeded = true; mWindowPlacerLocked.performSurfacePlacement(); Loading Loading
services/core/java/com/android/server/am/ActivityStack.java +2 −0 Original line number Diff line number Diff line Loading @@ -4564,6 +4564,8 @@ final class ActivityStack { addTask(task, toTop, false); if (mTaskPositioner != null) { mTaskPositioner.updateDefaultBounds(task, mTaskHistory, info.initialLayout); } else if (mBounds != null && task.mResizeable) { task.updateOverrideConfiguration(mBounds); } return task; } Loading
services/core/java/com/android/server/am/ActivityStackSupervisor.java +11 −14 Original line number Diff line number Diff line Loading @@ -2971,31 +2971,29 @@ public final class ActivityStackSupervisor implements DisplayListener { } ActivityRecord r = stack.topRunningActivityLocked(null); final boolean resizeTasks = r != null && r.task.mResizeable; mTmpBounds.clear(); mTmpConfigs.clear(); if (resizeTasks) { ArrayList<TaskRecord> tasks = stack.getAllTasks(); for (int i = tasks.size() - 1; i >= 0; i--) { TaskRecord task = tasks.get(i); if (task.mResizeable) { if (stack.mStackId == FREEFORM_WORKSPACE_STACK_ID) { // For freeform stack we don't adjust the size of the tasks to match that of // the stack, but we do try to make sure the tasks are still contained with the // bounds of the stack. // For freeform stack we don't adjust the size of the tasks to match that // of the stack, but we do try to make sure the tasks are still contained // with the bounds of the stack. tempRect2.set(task.mBounds); fitWithinBounds(tempRect2, bounds); task.updateOverrideConfiguration(tempRect2); } else { task.updateOverrideConfiguration(bounds); } } mTmpConfigs.put(task.taskId, task.mOverrideConfig); mTmpBounds.put(task.taskId, task.mBounds); } } stack.mFullscreen = mWindowManager.resizeStack(stackId, bounds, resizeTasks, mTmpConfigs, mTmpBounds); stack.mFullscreen = mWindowManager.resizeStack(stackId, bounds, mTmpConfigs, mTmpBounds); if (stack.mStackId == DOCKED_STACK_ID) { // Dock stack funness...Yay! if (stack.mFullscreen) { Loading @@ -3008,7 +3006,6 @@ public final class ActivityStackSupervisor implements DisplayListener { } } final ArrayList<TaskRecord> tasks = stack.getAllTasks(); final int count = tasks.size(); for (int i = 0; i < count; i++) { moveTaskToStackLocked(tasks.get(i).taskId, Loading
services/core/java/com/android/server/am/TaskRecord.java +1 −1 Original line number Diff line number Diff line Loading @@ -1235,7 +1235,7 @@ final class TaskRecord { if (stack == null || stack.mStackId == HOME_STACK_ID || stack.mStackId == FULLSCREEN_WORKSPACE_STACK_ID) { return null; return (mResizeable && stack != null) ? stack.mBounds : null; } else if (stack.mStackId == DOCKED_STACK_ID) { return stack.mBounds; } Loading
services/core/java/com/android/server/wm/TaskStack.java +2 −10 Original line number Diff line number Diff line Loading @@ -118,30 +118,22 @@ public class TaskStack implements DimLayer.DimLayerUser { /** * Set the bounds of the stack and its containing tasks. * @param stackBounds New stack bounds. Passing in null sets the bounds to fullscreen. * @param resizeTasks If true, the tasks within the stack will also be resized. * @param configs Configuration for individual tasks, keyed by task id. * @param taskBounds Bounds for individual tasks, keyed by task id. * @return True if the stack bounds was changed. * */ boolean setBounds(Rect stackBounds, boolean resizeTasks, SparseArray<Configuration> configs, SparseArray<Rect> taskBounds) { boolean setBounds( Rect stackBounds, SparseArray<Configuration> configs, SparseArray<Rect> taskBounds) { if (!setBounds(stackBounds)) { return false; } if (!resizeTasks) { return true; } // Update bounds of containing tasks. for (int taskNdx = mTasks.size() - 1; taskNdx >= 0; --taskNdx) { final Task task = mTasks.get(taskNdx); Configuration config = configs.get(task.mTaskId); if (config != null) { Rect bounds = taskBounds.get(task.mTaskId); if (bounds == null) { bounds = stackBounds; } task.setBounds(bounds, config); } else { Slog.wtf(TAG, "No config for task: " + task + ", is there a mismatch with AM?"); Loading
services/core/java/com/android/server/wm/WindowManagerService.java +2 −3 Original line number Diff line number Diff line Loading @@ -4632,12 +4632,11 @@ public class WindowManagerService extends IWindowManager.Stub * Re-sizes a stack and its containing tasks. * @param stackId Id of stack to resize. * @param bounds New stack bounds. Passing in null sets the bounds to fullscreen. * @param resizeTasks If true, the tasks within the stack will also be resized. * @param configs Configurations for tasks in the resized stack, keyed by task id. * @param taskBounds Bounds for tasks in the resized stack, keyed by task id. * @return True if the stack is now fullscreen. * */ public boolean resizeStack(int stackId, Rect bounds, boolean resizeTasks, public boolean resizeStack(int stackId, Rect bounds, SparseArray<Configuration> configs, SparseArray<Rect> taskBounds) { synchronized (mWindowMap) { final TaskStack stack = mStackIdToStack.get(stackId); Loading @@ -4645,7 +4644,7 @@ public class WindowManagerService extends IWindowManager.Stub throw new IllegalArgumentException("resizeStack: stackId " + stackId + " not found."); } if (stack.setBounds(bounds, resizeTasks, configs, taskBounds)) { if (stack.setBounds(bounds, configs, taskBounds)) { stack.resizeWindows(); stack.getDisplayContent().layoutNeeded = true; mWindowPlacerLocked.performSurfacePlacement(); Loading