Loading services/core/java/com/android/server/am/ActivityRecord.java +1 −1 Original line number Diff line number Diff line Loading @@ -487,7 +487,7 @@ final class ActivityRecord { void setTask(TaskRecord newTask, ThumbnailHolder newThumbHolder, boolean isRoot) { if (task != null && task.removeActivity(this)) { if (task != newTask) { mStackSupervisor.removeTask(task); task.stack.removeTask(task); } else { Slog.d(TAG, "!!! REMOVE THIS LOG !!! setTask: nearly removed stack=" + (newTask == null ? null : newTask.stack)); Loading services/core/java/com/android/server/am/ActivityStack.java +18 −4 Original line number Diff line number Diff line Loading @@ -2711,7 +2711,7 @@ final class ActivityStack { r.finishLaunchTickingLocked(); } final void removeActivityFromHistoryLocked(ActivityRecord r) { private void removeActivityFromHistoryLocked(ActivityRecord r) { finishActivityResultsLocked(r, Activity.RESULT_CANCELED, null); r.makeFinishing(); if (DEBUG_ADD_REMOVE) { Loading @@ -2726,7 +2726,7 @@ final class ActivityStack { if (mStackSupervisor.isFrontStack(this) && task == topTask() && task.mOnTopOfHome) { mStackSupervisor.moveHomeToTop(); } mStackSupervisor.removeTask(task); removeTask(task); } r.takeFromHistory(); removeTimeoutsForActivityLocked(r); Loading Loading @@ -3633,14 +3633,28 @@ final class ActivityStack { return starting; } boolean removeTask(TaskRecord task) { void removeTask(TaskRecord task) { mWindowManager.removeTask(task.taskId); final ActivityRecord r = mResumedActivity; if (r != null && r.task == task) { mResumedActivity = null; } final int taskNdx = mTaskHistory.indexOf(task); final int topTaskNdx = mTaskHistory.size() - 1; if (task.mOnTopOfHome && taskNdx < topTaskNdx) { mTaskHistory.get(taskNdx + 1).mOnTopOfHome = true; } mTaskHistory.remove(task); return mTaskHistory.isEmpty(); if (mTaskHistory.isEmpty()) { if (DEBUG_STACK) Slog.i(TAG, "removeTask: moving to back stack=" + this); if (isOnHomeDisplay()) { mStackSupervisor.moveHomeStack(!isHomeStack()); } mStacks.remove(this); mStacks.add(0, this); } } TaskRecord createTaskRecord(int taskId, ActivityInfo info, Intent intent, boolean toTop) { Loading services/core/java/com/android/server/am/ActivityStackSupervisor.java +1 −20 Original line number Diff line number Diff line Loading @@ -364,25 +364,6 @@ public final class ActivityStackSupervisor implements DisplayListener { return mCurTaskId; } void removeTask(TaskRecord task) { mWindowManager.removeTask(task.taskId); final ActivityStack stack = task.stack; final ActivityRecord r = stack.mResumedActivity; if (r != null && r.task == task) { stack.mResumedActivity = null; } if (stack.removeTask(task) && !stack.isHomeStack()) { if (DEBUG_STACK) Slog.i(TAG, "removeTask: removing stack " + stack); stack.mActivityContainer.detachLocked(); final int stackId = stack.mStackId; final int nextStackId = mWindowManager.removeStack(stackId); // TODO: Perhaps we need to let the ActivityManager determine the next focus... if (stack.isOnHomeDisplay()) { mFocusedStack = getStack(nextStackId); } } } ActivityRecord resumedAppLocked() { ActivityStack stack = getFocusedStack(); if (stack == null) { Loading Loading @@ -2184,7 +2165,7 @@ public final class ActivityStackSupervisor implements DisplayListener { Slog.w(TAG, "moveTaskToStack: no stack for id=" + stackId); return; } removeTask(task); task.stack.removeTask(task); stack.addTask(task, toTop); mWindowManager.addTask(taskId, stackId, toTop); resumeTopActivitiesLocked(); Loading services/core/java/com/android/server/wm/TaskStack.java +6 −2 Original line number Diff line number Diff line Loading @@ -191,14 +191,18 @@ public class TaskStack { } /** * Delete a Task from this stack. If it is the last Task in the stack, remove this stack from * its parent StackBox and merge the parent. * Delete a Task from this stack. If it is the last Task in the stack, move this stack to the * back. * @param task The Task to delete. */ void removeTask(Task task) { if (DEBUG_TASK_MOVEMENT) Slog.d(TAG, "removeTask: task=" + task); mTasks.remove(task); mDisplayContent.removeTask(task); if (mTasks.isEmpty()) { mDisplayContent.moveStack(this, false); } mDisplayContent.layoutNeeded = true; } int remove() { Loading services/core/java/com/android/server/wm/WindowManagerService.java +0 −17 Original line number Diff line number Diff line Loading @@ -4836,23 +4836,6 @@ public class WindowManagerService extends IWindowManager.Stub } } public int removeStack(int stackId) { synchronized (mWindowMap) { final TaskStack stack = mStackIdToStack.get(stackId); if (stack != null) { mStackIdToStack.delete(stackId); int nextStackId = stack.remove(); stack.getDisplayContent().layoutNeeded = true; requestTraversalLocked(); if (nextStackId > HOME_STACK_ID) { return nextStackId; } } if (DEBUG_STACK) Slog.i(TAG, "removeStack: could not find stackId=" + stackId); } return HOME_STACK_ID; } public void removeTask(int taskId) { synchronized (mWindowMap) { Task task = mTaskIdToTask.get(taskId); Loading Loading
services/core/java/com/android/server/am/ActivityRecord.java +1 −1 Original line number Diff line number Diff line Loading @@ -487,7 +487,7 @@ final class ActivityRecord { void setTask(TaskRecord newTask, ThumbnailHolder newThumbHolder, boolean isRoot) { if (task != null && task.removeActivity(this)) { if (task != newTask) { mStackSupervisor.removeTask(task); task.stack.removeTask(task); } else { Slog.d(TAG, "!!! REMOVE THIS LOG !!! setTask: nearly removed stack=" + (newTask == null ? null : newTask.stack)); Loading
services/core/java/com/android/server/am/ActivityStack.java +18 −4 Original line number Diff line number Diff line Loading @@ -2711,7 +2711,7 @@ final class ActivityStack { r.finishLaunchTickingLocked(); } final void removeActivityFromHistoryLocked(ActivityRecord r) { private void removeActivityFromHistoryLocked(ActivityRecord r) { finishActivityResultsLocked(r, Activity.RESULT_CANCELED, null); r.makeFinishing(); if (DEBUG_ADD_REMOVE) { Loading @@ -2726,7 +2726,7 @@ final class ActivityStack { if (mStackSupervisor.isFrontStack(this) && task == topTask() && task.mOnTopOfHome) { mStackSupervisor.moveHomeToTop(); } mStackSupervisor.removeTask(task); removeTask(task); } r.takeFromHistory(); removeTimeoutsForActivityLocked(r); Loading Loading @@ -3633,14 +3633,28 @@ final class ActivityStack { return starting; } boolean removeTask(TaskRecord task) { void removeTask(TaskRecord task) { mWindowManager.removeTask(task.taskId); final ActivityRecord r = mResumedActivity; if (r != null && r.task == task) { mResumedActivity = null; } final int taskNdx = mTaskHistory.indexOf(task); final int topTaskNdx = mTaskHistory.size() - 1; if (task.mOnTopOfHome && taskNdx < topTaskNdx) { mTaskHistory.get(taskNdx + 1).mOnTopOfHome = true; } mTaskHistory.remove(task); return mTaskHistory.isEmpty(); if (mTaskHistory.isEmpty()) { if (DEBUG_STACK) Slog.i(TAG, "removeTask: moving to back stack=" + this); if (isOnHomeDisplay()) { mStackSupervisor.moveHomeStack(!isHomeStack()); } mStacks.remove(this); mStacks.add(0, this); } } TaskRecord createTaskRecord(int taskId, ActivityInfo info, Intent intent, boolean toTop) { Loading
services/core/java/com/android/server/am/ActivityStackSupervisor.java +1 −20 Original line number Diff line number Diff line Loading @@ -364,25 +364,6 @@ public final class ActivityStackSupervisor implements DisplayListener { return mCurTaskId; } void removeTask(TaskRecord task) { mWindowManager.removeTask(task.taskId); final ActivityStack stack = task.stack; final ActivityRecord r = stack.mResumedActivity; if (r != null && r.task == task) { stack.mResumedActivity = null; } if (stack.removeTask(task) && !stack.isHomeStack()) { if (DEBUG_STACK) Slog.i(TAG, "removeTask: removing stack " + stack); stack.mActivityContainer.detachLocked(); final int stackId = stack.mStackId; final int nextStackId = mWindowManager.removeStack(stackId); // TODO: Perhaps we need to let the ActivityManager determine the next focus... if (stack.isOnHomeDisplay()) { mFocusedStack = getStack(nextStackId); } } } ActivityRecord resumedAppLocked() { ActivityStack stack = getFocusedStack(); if (stack == null) { Loading Loading @@ -2184,7 +2165,7 @@ public final class ActivityStackSupervisor implements DisplayListener { Slog.w(TAG, "moveTaskToStack: no stack for id=" + stackId); return; } removeTask(task); task.stack.removeTask(task); stack.addTask(task, toTop); mWindowManager.addTask(taskId, stackId, toTop); resumeTopActivitiesLocked(); Loading
services/core/java/com/android/server/wm/TaskStack.java +6 −2 Original line number Diff line number Diff line Loading @@ -191,14 +191,18 @@ public class TaskStack { } /** * Delete a Task from this stack. If it is the last Task in the stack, remove this stack from * its parent StackBox and merge the parent. * Delete a Task from this stack. If it is the last Task in the stack, move this stack to the * back. * @param task The Task to delete. */ void removeTask(Task task) { if (DEBUG_TASK_MOVEMENT) Slog.d(TAG, "removeTask: task=" + task); mTasks.remove(task); mDisplayContent.removeTask(task); if (mTasks.isEmpty()) { mDisplayContent.moveStack(this, false); } mDisplayContent.layoutNeeded = true; } int remove() { Loading
services/core/java/com/android/server/wm/WindowManagerService.java +0 −17 Original line number Diff line number Diff line Loading @@ -4836,23 +4836,6 @@ public class WindowManagerService extends IWindowManager.Stub } } public int removeStack(int stackId) { synchronized (mWindowMap) { final TaskStack stack = mStackIdToStack.get(stackId); if (stack != null) { mStackIdToStack.delete(stackId); int nextStackId = stack.remove(); stack.getDisplayContent().layoutNeeded = true; requestTraversalLocked(); if (nextStackId > HOME_STACK_ID) { return nextStackId; } } if (DEBUG_STACK) Slog.i(TAG, "removeStack: could not find stackId=" + stackId); } return HOME_STACK_ID; } public void removeTask(int taskId) { synchronized (mWindowMap) { Task task = mTaskIdToTask.get(taskId); Loading