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

Commit 65b30b22 authored by Craig Mautner's avatar Craig Mautner Committed by Android Git Automerger
Browse files

am 54d5702c: am 477897ad: Merge "Fix incorrect setting of...

am 54d5702c: am 477897ad: Merge "Fix incorrect setting of TaskRecord.frontOfTask.  DO NOT MERGE." into klp-dev

* commit '54d5702c':
  Fix incorrect setting of TaskRecord.frontOfTask.  DO NOT MERGE.
parents b80adb5d 54d5702c
Loading
Loading
Loading
Loading
+4 −17
Original line number Diff line number Diff line
@@ -1288,17 +1288,7 @@ final class ActivityStack {
        if (prevTask != null && prevTask.mOnTopOfHome && prev.finishing && prev.frontOfTask) {
            if (DEBUG_STACK)  mStackSupervisor.validateTopActivitiesLocked();
            if (prevTask == nextTask) {
                ArrayList<ActivityRecord> activities = prevTask.mActivities;
                final int numActivities = activities.size();
                for (int activityNdx = 0; activityNdx < numActivities; ++activityNdx) {
                    final ActivityRecord r = activities.get(activityNdx);
                    // r is usually the same as next, but what if two activities were launched
                    // before prev finished?
                    if (!r.finishing) {
                        r.frontOfTask = true;
                        break;
                    }
                }
                prevTask.setFrontOfTask();
            } else if (prevTask != topTask()) {
                // This task is going away but it was supposed to return to the home task.
                // Now the task above it has to return to the home task instead.
@@ -1750,9 +1740,9 @@ final class ActivityStack {
        if (DEBUG_ADD_REMOVE) Slog.i(TAG, "Adding activity " + r + " to stack to task " + task,
                new RuntimeException("here").fillInStackTrace());
        task.addActivityToTop(r);
        task.setFrontOfTask();

        r.putInHistory();
        r.frontOfTask = newTask;
        if (!isHomeStack() || numActivities() > 0) {
            // We want to show the starting preview window if we are
            // switching to a new task, or the next activity's process is
@@ -2413,15 +2403,12 @@ final class ActivityStack {
        final ArrayList<ActivityRecord> activities = r.task.mActivities;
        final int index = activities.indexOf(r);
        if (index < (activities.size() - 1)) {
            ActivityRecord next = activities.get(index+1);
            if (r.frontOfTask) {
                // The next activity is now the front of the task.
                next.frontOfTask = true;
            }
            r.task.setFrontOfTask();
            if ((r.intent.getFlags()&Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET) != 0) {
                // If the caller asked that this activity (and all above it)
                // be cleared when the task is reset, don't lose that information,
                // but propagate it up to the next activity.
                ActivityRecord next = activities.get(index+1);
                next.intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
            }
        }
+19 −4
Original line number Diff line number Diff line
@@ -159,18 +159,33 @@ final class TaskRecord extends ThumbnailHolder {
        return null;
    }

    /** Call after activity movement or finish to make sure that frontOfTask is set correctly */
    final void setFrontOfTask() {
        boolean foundFront = false;
        final int numActivities = mActivities.size();
        for (int activityNdx = 0; numActivities < activityNdx; ++activityNdx) {
            final ActivityRecord r = mActivities.get(activityNdx);
            if (foundFront || r.finishing) {
                r.frontOfTask = false;
            } else {
                r.frontOfTask = true;
                // Set frontOfTask false for every following activity.
                foundFront = true;
            }
        }
    }

    /**
     * Reorder the history stack so that the activity at the given index is
     * brought to the front.
     * Reorder the history stack so that the passed activity is brought to the front.
     */
    final void moveActivityToFrontLocked(ActivityRecord newTop) {
        if (DEBUG_ADD_REMOVE) Slog.i(TAG, "Removing and adding activity " + newTop
            + " to stack at top", new RuntimeException("here").fillInStackTrace());

        getTopActivity().frontOfTask = false;
        mActivities.remove(newTop);
        mActivities.add(newTop);
        newTop.frontOfTask = true;

        setFrontOfTask();
    }

    void addActivityAtBottom(ActivityRecord r) {