Loading services/core/java/com/android/server/am/ActivityManagerService.java +4 −4 Original line number Diff line number Diff line Loading @@ -7782,7 +7782,7 @@ public final class ActivityManagerService extends ActivityManagerNative synchronized (this) { enforceCallingPermission(android.Manifest.permission.READ_FRAME_BUFFER, "getTaskThumbnail()"); TaskRecord tr = mStackSupervisor.anyTaskForIdLocked(id); TaskRecord tr = mStackSupervisor.anyTaskForIdLocked(id, false); if (tr != null) { return tr.getTaskThumbnailLocked(); } Loading Loading @@ -7895,7 +7895,7 @@ public final class ActivityManagerService extends ActivityManagerNative @Override public void setTaskResizeable(int taskId, boolean resizeable) { synchronized (this) { TaskRecord task = mStackSupervisor.anyTaskForIdLocked(taskId); TaskRecord task = mStackSupervisor.anyTaskForIdLocked(taskId, false); if (task == null) { Slog.w(TAG, "setTaskResizeable: taskId=" + taskId + " not found"); return; Loading Loading @@ -8043,7 +8043,7 @@ public final class ActivityManagerService extends ActivityManagerNative * @return Returns true if the given task was found and removed. */ private boolean removeTaskByIdLocked(int taskId, boolean killProcess) { TaskRecord tr = mStackSupervisor.anyTaskForIdLocked(taskId); TaskRecord tr = mStackSupervisor.anyTaskForIdLocked(taskId, false); if (tr != null) { tr.removeTaskActivitiesLocked(); cleanUpRemovedTaskLocked(tr, killProcess); Loading Loading @@ -8296,7 +8296,7 @@ public final class ActivityManagerService extends ActivityManagerNative long ident = Binder.clearCallingIdentity(); try { synchronized (this) { TaskRecord tr = mStackSupervisor.anyTaskForIdLocked(taskId); TaskRecord tr = mStackSupervisor.anyTaskForIdLocked(taskId, false); return tr != null && tr.stack != null && tr.stack.isHomeStack(); } } finally { Loading services/core/java/com/android/server/am/ActivityStack.java +2 −0 Original line number Diff line number Diff line Loading @@ -4171,6 +4171,8 @@ final class ActivityStack { } mActivityContainer.onTaskListEmptyLocked(); } task.stack = null; } TaskRecord createTaskRecord(int taskId, ActivityInfo info, Intent intent, Loading services/core/java/com/android/server/am/ActivityStackSupervisor.java +20 −9 Original line number Diff line number Diff line Loading @@ -462,6 +462,16 @@ public final class ActivityStackSupervisor implements DisplayListener { } TaskRecord anyTaskForIdLocked(int id) { return anyTaskForIdLocked(id, true); } /** * Returns a {@link TaskRecord} for the input id if available. Null otherwise. * @param id Id of the task we would like returned. * @param restoreFromRecents If the id was not in the active list, but was found in recents, * restore the task from recents to the active list. */ TaskRecord anyTaskForIdLocked(int id, boolean restoreFromRecents) { int numDisplays = mActivityDisplays.size(); for (int displayNdx = 0; displayNdx < numDisplays; ++displayNdx) { ArrayList<ActivityStack> stacks = mActivityDisplays.valueAt(displayNdx).mStacks; Loading @@ -482,6 +492,10 @@ public final class ActivityStackSupervisor implements DisplayListener { return null; } if (!restoreFromRecents) { return task; } if (!restoreRecentTaskLocked(task)) { if (DEBUG_RECENTS) Slog.w(TAG, "Couldn't restore task id=" + id + " found in recents"); return null; Loading Loading @@ -516,7 +530,7 @@ public final class ActivityStackSupervisor implements DisplayListener { if (mCurTaskId <= 0) { mCurTaskId = 1; } } while (anyTaskForIdLocked(mCurTaskId) != null); } while (anyTaskForIdLocked(mCurTaskId, false) != null); return mCurTaskId; } Loading Loading @@ -2661,7 +2675,7 @@ public final class ActivityStackSupervisor implements DisplayListener { final ArrayList<ActivityStack> homeDisplayStacks = mHomeStack.mStacks; for (int stackNdx = homeDisplayStacks.size() - 1; stackNdx >= 0; --stackNdx) { final ActivityStack tmpStack = homeDisplayStacks.get(stackNdx); if (!tmpStack.isHomeStack()) { if (!tmpStack.isHomeStack() && tmpStack.mFullscreen) { stack = tmpStack; break; } Loading Loading @@ -3928,6 +3942,10 @@ public final class ActivityStackSupervisor implements DisplayListener { } void onTaskListEmptyLocked() { mHandler.removeMessages(CONTAINER_TASK_LIST_EMPTY_TIMEOUT, this); detachLocked(); deleteActivityContainer(this); mHandler.obtainMessage(CONTAINER_CALLBACK_TASK_LIST_EMPTY, this).sendToTarget(); } @Override Loading Loading @@ -4016,13 +4034,6 @@ public final class ActivityStackSupervisor implements DisplayListener { return false; } void onTaskListEmptyLocked() { mHandler.removeMessages(CONTAINER_TASK_LIST_EMPTY_TIMEOUT, this); detachLocked(); deleteActivityContainer(this); mHandler.obtainMessage(CONTAINER_CALLBACK_TASK_LIST_EMPTY, this).sendToTarget(); } private void setSurfaceIfReadyLocked() { if (DEBUG_STACK) Slog.v(TAG, "setSurfaceIfReadyLocked: mDrawn=" + mDrawn + " mContainerState=" + mContainerState + " mSurface=" + mSurface); Loading Loading
services/core/java/com/android/server/am/ActivityManagerService.java +4 −4 Original line number Diff line number Diff line Loading @@ -7782,7 +7782,7 @@ public final class ActivityManagerService extends ActivityManagerNative synchronized (this) { enforceCallingPermission(android.Manifest.permission.READ_FRAME_BUFFER, "getTaskThumbnail()"); TaskRecord tr = mStackSupervisor.anyTaskForIdLocked(id); TaskRecord tr = mStackSupervisor.anyTaskForIdLocked(id, false); if (tr != null) { return tr.getTaskThumbnailLocked(); } Loading Loading @@ -7895,7 +7895,7 @@ public final class ActivityManagerService extends ActivityManagerNative @Override public void setTaskResizeable(int taskId, boolean resizeable) { synchronized (this) { TaskRecord task = mStackSupervisor.anyTaskForIdLocked(taskId); TaskRecord task = mStackSupervisor.anyTaskForIdLocked(taskId, false); if (task == null) { Slog.w(TAG, "setTaskResizeable: taskId=" + taskId + " not found"); return; Loading Loading @@ -8043,7 +8043,7 @@ public final class ActivityManagerService extends ActivityManagerNative * @return Returns true if the given task was found and removed. */ private boolean removeTaskByIdLocked(int taskId, boolean killProcess) { TaskRecord tr = mStackSupervisor.anyTaskForIdLocked(taskId); TaskRecord tr = mStackSupervisor.anyTaskForIdLocked(taskId, false); if (tr != null) { tr.removeTaskActivitiesLocked(); cleanUpRemovedTaskLocked(tr, killProcess); Loading Loading @@ -8296,7 +8296,7 @@ public final class ActivityManagerService extends ActivityManagerNative long ident = Binder.clearCallingIdentity(); try { synchronized (this) { TaskRecord tr = mStackSupervisor.anyTaskForIdLocked(taskId); TaskRecord tr = mStackSupervisor.anyTaskForIdLocked(taskId, false); return tr != null && tr.stack != null && tr.stack.isHomeStack(); } } finally { Loading
services/core/java/com/android/server/am/ActivityStack.java +2 −0 Original line number Diff line number Diff line Loading @@ -4171,6 +4171,8 @@ final class ActivityStack { } mActivityContainer.onTaskListEmptyLocked(); } task.stack = null; } TaskRecord createTaskRecord(int taskId, ActivityInfo info, Intent intent, Loading
services/core/java/com/android/server/am/ActivityStackSupervisor.java +20 −9 Original line number Diff line number Diff line Loading @@ -462,6 +462,16 @@ public final class ActivityStackSupervisor implements DisplayListener { } TaskRecord anyTaskForIdLocked(int id) { return anyTaskForIdLocked(id, true); } /** * Returns a {@link TaskRecord} for the input id if available. Null otherwise. * @param id Id of the task we would like returned. * @param restoreFromRecents If the id was not in the active list, but was found in recents, * restore the task from recents to the active list. */ TaskRecord anyTaskForIdLocked(int id, boolean restoreFromRecents) { int numDisplays = mActivityDisplays.size(); for (int displayNdx = 0; displayNdx < numDisplays; ++displayNdx) { ArrayList<ActivityStack> stacks = mActivityDisplays.valueAt(displayNdx).mStacks; Loading @@ -482,6 +492,10 @@ public final class ActivityStackSupervisor implements DisplayListener { return null; } if (!restoreFromRecents) { return task; } if (!restoreRecentTaskLocked(task)) { if (DEBUG_RECENTS) Slog.w(TAG, "Couldn't restore task id=" + id + " found in recents"); return null; Loading Loading @@ -516,7 +530,7 @@ public final class ActivityStackSupervisor implements DisplayListener { if (mCurTaskId <= 0) { mCurTaskId = 1; } } while (anyTaskForIdLocked(mCurTaskId) != null); } while (anyTaskForIdLocked(mCurTaskId, false) != null); return mCurTaskId; } Loading Loading @@ -2661,7 +2675,7 @@ public final class ActivityStackSupervisor implements DisplayListener { final ArrayList<ActivityStack> homeDisplayStacks = mHomeStack.mStacks; for (int stackNdx = homeDisplayStacks.size() - 1; stackNdx >= 0; --stackNdx) { final ActivityStack tmpStack = homeDisplayStacks.get(stackNdx); if (!tmpStack.isHomeStack()) { if (!tmpStack.isHomeStack() && tmpStack.mFullscreen) { stack = tmpStack; break; } Loading Loading @@ -3928,6 +3942,10 @@ public final class ActivityStackSupervisor implements DisplayListener { } void onTaskListEmptyLocked() { mHandler.removeMessages(CONTAINER_TASK_LIST_EMPTY_TIMEOUT, this); detachLocked(); deleteActivityContainer(this); mHandler.obtainMessage(CONTAINER_CALLBACK_TASK_LIST_EMPTY, this).sendToTarget(); } @Override Loading Loading @@ -4016,13 +4034,6 @@ public final class ActivityStackSupervisor implements DisplayListener { return false; } void onTaskListEmptyLocked() { mHandler.removeMessages(CONTAINER_TASK_LIST_EMPTY_TIMEOUT, this); detachLocked(); deleteActivityContainer(this); mHandler.obtainMessage(CONTAINER_CALLBACK_TASK_LIST_EMPTY, this).sendToTarget(); } private void setSurfaceIfReadyLocked() { if (DEBUG_STACK) Slog.v(TAG, "setSurfaceIfReadyLocked: mDrawn=" + mDrawn + " mContainerState=" + mContainerState + " mSurface=" + mSurface); Loading