Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e5afd829 authored by Wale Ogunwale's avatar Wale Ogunwale Committed by Android (Google) Code Review
Browse files

Merge "Revert "Remove activity and window stacks when last task is removed.""

parents c4be9087 7a7bf5ea
Loading
Loading
Loading
Loading
+4 −4
Original line number Original line Diff line number Diff line
@@ -7878,7 +7878,7 @@ public final class ActivityManagerService extends ActivityManagerNative
        synchronized (this) {
        synchronized (this) {
            enforceCallingPermission(android.Manifest.permission.READ_FRAME_BUFFER,
            enforceCallingPermission(android.Manifest.permission.READ_FRAME_BUFFER,
                    "getTaskThumbnail()");
                    "getTaskThumbnail()");
            TaskRecord tr = mStackSupervisor.anyTaskForIdLocked(id, false);
            TaskRecord tr = mStackSupervisor.anyTaskForIdLocked(id);
            if (tr != null) {
            if (tr != null) {
                return tr.getTaskThumbnailLocked();
                return tr.getTaskThumbnailLocked();
            }
            }
@@ -7991,7 +7991,7 @@ public final class ActivityManagerService extends ActivityManagerNative
    @Override
    @Override
    public void setTaskResizeable(int taskId, boolean resizeable) {
    public void setTaskResizeable(int taskId, boolean resizeable) {
        synchronized (this) {
        synchronized (this) {
            TaskRecord task = mStackSupervisor.anyTaskForIdLocked(taskId, false);
            TaskRecord task = mStackSupervisor.anyTaskForIdLocked(taskId);
            if (task == null) {
            if (task == null) {
                Slog.w(TAG, "setTaskResizeable: taskId=" + taskId + " not found");
                Slog.w(TAG, "setTaskResizeable: taskId=" + taskId + " not found");
                return;
                return;
@@ -8158,7 +8158,7 @@ public final class ActivityManagerService extends ActivityManagerNative
     * @return Returns true if the given task was found and removed.
     * @return Returns true if the given task was found and removed.
     */
     */
    private boolean removeTaskByIdLocked(int taskId, boolean killProcess) {
    private boolean removeTaskByIdLocked(int taskId, boolean killProcess) {
        TaskRecord tr = mStackSupervisor.anyTaskForIdLocked(taskId, false);
        TaskRecord tr = mStackSupervisor.anyTaskForIdLocked(taskId);
        if (tr != null) {
        if (tr != null) {
            tr.removeTaskActivitiesLocked();
            tr.removeTaskActivitiesLocked();
            cleanUpRemovedTaskLocked(tr, killProcess);
            cleanUpRemovedTaskLocked(tr, killProcess);
@@ -8411,7 +8411,7 @@ public final class ActivityManagerService extends ActivityManagerNative
        long ident = Binder.clearCallingIdentity();
        long ident = Binder.clearCallingIdentity();
        try {
        try {
            synchronized (this) {
            synchronized (this) {
                TaskRecord tr = mStackSupervisor.anyTaskForIdLocked(taskId, false);
                TaskRecord tr = mStackSupervisor.anyTaskForIdLocked(taskId);
                return tr != null && tr.stack != null && tr.stack.isHomeStack();
                return tr != null && tr.stack != null && tr.stack.isHomeStack();
            }
            }
        } finally {
        } finally {
+0 −2
Original line number Original line Diff line number Diff line
@@ -4247,8 +4247,6 @@ final class ActivityStack {
                mActivityContainer.onTaskListEmptyLocked();
                mActivityContainer.onTaskListEmptyLocked();
            }
            }
        }
        }

        task.stack = null;
    }
    }


    TaskRecord createTaskRecord(int taskId, ActivityInfo info, Intent intent,
    TaskRecord createTaskRecord(int taskId, ActivityInfo info, Intent intent,
+9 −20
Original line number Original line Diff line number Diff line
@@ -471,16 +471,6 @@ public final class ActivityStackSupervisor implements DisplayListener {
    }
    }


    TaskRecord anyTaskForIdLocked(int id) {
    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();
        int numDisplays = mActivityDisplays.size();
        for (int displayNdx = 0; displayNdx < numDisplays; ++displayNdx) {
        for (int displayNdx = 0; displayNdx < numDisplays; ++displayNdx) {
            ArrayList<ActivityStack> stacks = mActivityDisplays.valueAt(displayNdx).mStacks;
            ArrayList<ActivityStack> stacks = mActivityDisplays.valueAt(displayNdx).mStacks;
@@ -501,10 +491,6 @@ public final class ActivityStackSupervisor implements DisplayListener {
            return null;
            return null;
        }
        }


        if (!restoreFromRecents) {
            return task;
        }

        if (!restoreRecentTaskLocked(task)) {
        if (!restoreRecentTaskLocked(task)) {
            if (DEBUG_RECENTS) Slog.w(TAG, "Couldn't restore task id=" + id + " found in recents");
            if (DEBUG_RECENTS) Slog.w(TAG, "Couldn't restore task id=" + id + " found in recents");
            return null;
            return null;
@@ -539,7 +525,7 @@ public final class ActivityStackSupervisor implements DisplayListener {
            if (mCurTaskId <= 0) {
            if (mCurTaskId <= 0) {
                mCurTaskId = 1;
                mCurTaskId = 1;
            }
            }
        } while (anyTaskForIdLocked(mCurTaskId, false) != null);
        } while (anyTaskForIdLocked(mCurTaskId) != null);
        return mCurTaskId;
        return mCurTaskId;
    }
    }


@@ -2731,7 +2717,7 @@ public final class ActivityStackSupervisor implements DisplayListener {
            final ArrayList<ActivityStack> homeDisplayStacks = mHomeStack.mStacks;
            final ArrayList<ActivityStack> homeDisplayStacks = mHomeStack.mStacks;
            for (int stackNdx = homeDisplayStacks.size() - 1; stackNdx >= 0; --stackNdx) {
            for (int stackNdx = homeDisplayStacks.size() - 1; stackNdx >= 0; --stackNdx) {
                final ActivityStack tmpStack = homeDisplayStacks.get(stackNdx);
                final ActivityStack tmpStack = homeDisplayStacks.get(stackNdx);
                if (!tmpStack.isHomeStack() && tmpStack.mFullscreen) {
                if (!tmpStack.isHomeStack()) {
                    stack = tmpStack;
                    stack = tmpStack;
                    break;
                    break;
                }
                }
@@ -3993,10 +3979,6 @@ public final class ActivityStackSupervisor implements DisplayListener {
        }
        }


        void onTaskListEmptyLocked() {
        void onTaskListEmptyLocked() {
            mHandler.removeMessages(CONTAINER_TASK_LIST_EMPTY_TIMEOUT, this);
            detachLocked();
            deleteActivityContainer(this);
            mHandler.obtainMessage(CONTAINER_CALLBACK_TASK_LIST_EMPTY, this).sendToTarget();
        }
        }


        @Override
        @Override
@@ -4085,6 +4067,13 @@ public final class ActivityStackSupervisor implements DisplayListener {
            return false;
            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() {
        private void setSurfaceIfReadyLocked() {
            if (DEBUG_STACK) Slog.v(TAG, "setSurfaceIfReadyLocked: mDrawn=" + mDrawn +
            if (DEBUG_STACK) Slog.v(TAG, "setSurfaceIfReadyLocked: mDrawn=" + mDrawn +
                    " mContainerState=" + mContainerState + " mSurface=" + mSurface);
                    " mContainerState=" + mContainerState + " mSurface=" + mSurface);