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

Commit 709393fc authored by Craig Mautner's avatar Craig Mautner Committed by Android (Google) Code Review
Browse files

Merge "Fix launching logic."

parents 53302fcc 69ada558
Loading
Loading
Loading
Loading
+6 −7
Original line number Diff line number Diff line
@@ -1266,7 +1266,7 @@ final class ActivityStack {
            // There are no more activities!  Let's just start up the
            // Launcher...
            ActivityOptions.abort(options);
            return mService.startHomeActivityLocked(mCurrentUser);
            return mStackSupervisor.resumeHomeActivity(prev);
        }

        next.delayedResume = false;
@@ -1284,8 +1284,7 @@ final class ActivityStack {

        if (prev != null && prev.mLaunchHomeTaskNext && prev.finishing &&
                prev.task.getTopActivity() == null) {
            prev.mLaunchHomeTaskNext = false;
            return mService.startHomeActivityLocked(mCurrentUser);
            return mStackSupervisor.resumeHomeActivity(prev);
        }

        // If we are sleeping, and there is no resumed activity, and the top
@@ -1323,9 +1322,8 @@ final class ActivityStack {

        // If we are currently pausing an activity, then don't do anything
        // until that is done.
        if (mPausingActivity != null) {
            if (DEBUG_SWITCH || DEBUG_PAUSE) Slog.v(TAG,
                    "Skip resume: pausing=" + mPausingActivity);
        if (!mStackSupervisor.allPausedActivitiesComplete()) {
            if (DEBUG_SWITCH || DEBUG_PAUSE) Slog.v(TAG, "Skip resume: some activity pausing");
            return false;
        }

@@ -1362,6 +1360,7 @@ final class ActivityStack {
        // can be resumed...
        final ActivityStack lastStack = mStackSupervisor.getLastStack();
        if ((isHomeStack() ^ lastStack.isHomeStack()) && lastStack.mResumedActivity != null) {
            // TODO: Don't pause when launching to the sibling task.
            if (DEBUG_SWITCH) Slog.v(TAG, "Skip resume: need to start pausing");
            // At this point we want to put the upcoming activity's process
            // at the top of the LRU list, since we know we will be needing it
@@ -3274,7 +3273,7 @@ final class ActivityStack {
        if (mResumedActivity != null && mResumedActivity.task == tr &&
                mResumedActivity.mLaunchHomeTaskNext) {
            mResumedActivity.mLaunchHomeTaskNext = false;
            return mService.startHomeActivityLocked(mCurrentUser);
            return mStackSupervisor.resumeHomeActivity(null);
        }

        mStackSupervisor.getTopStack().resumeTopActivityLocked(null);
+16 −16
Original line number Diff line number Diff line
@@ -185,6 +185,17 @@ public class ActivityStackSupervisor {
        }
    }

    boolean resumeHomeActivity(ActivityRecord prev) {
        moveHomeStack(true);
        if (prev != null) {
            prev.mLaunchHomeTaskNext = false;
        }
        if (mHomeStack.topRunningActivityLocked(null) != null) {
            return mHomeStack.resumeTopActivityLocked(prev);
        }
        return mService.startHomeActivityLocked(mCurrentUser);
    }

    final void setLaunchHomeTaskNextFlag(ActivityRecord sourceRecord, ActivityRecord r,
            ActivityStack stack) {
        if (stack == mHomeStack) {
@@ -337,24 +348,13 @@ public class ActivityStackSupervisor {
    boolean allPausedActivitiesComplete() {
        for (int stackNdx = mStacks.size() - 1; stackNdx >= 0; --stackNdx) {
            final ActivityStack stack = mStacks.get(stackNdx);
            if (isFrontStack(stack)) {
                final ActivityRecord r = stack.mLastPausedActivity;
            final ActivityRecord r = stack.mPausingActivity;
            if (r != null && r.state != ActivityState.PAUSED
                    && r.state != ActivityState.STOPPED
                    && r.state != ActivityState.STOPPING) {
                return false;
            }
        }
        }
        // TODO: Not sure if this should check if all Resumed are complete too.
        switch (mStackState) {
            case STACK_STATE_HOME_TO_BACK:
                mStackState = STACK_STATE_HOME_IN_BACK;
                break;
            case STACK_STATE_HOME_TO_FRONT:
                mStackState = STACK_STATE_HOME_IN_FRONT;
                break;
        }
        return true;
    }