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

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

Merge "Do not recursively call setFocusedActivityLocked()"

parents 13bbcdda 3aa28b28
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -602,6 +602,8 @@ public final class ActivityManagerService extends ActivityManagerNative
    final AppErrors mAppErrors;
    boolean mDoingSetFocusedActivity;
    public boolean canShowErrorDialogs() {
        return mShowDialogs && !mSleeping && !mShuttingDown;
    }
@@ -2732,6 +2734,12 @@ public final class ActivityManagerService extends ActivityManagerNative
        }
        if (DEBUG_FOCUS) Slog.d(TAG_FOCUS, "setFocusedActivityLocked: r=" + r);
        final boolean wasDoingSetFocusedActivity = mDoingSetFocusedActivity;
        if (wasDoingSetFocusedActivity) Slog.w(TAG,
                "setFocusedActivityLocked: called recursively, r=" + r + ", reason=" + reason);
        mDoingSetFocusedActivity = true;
        final ActivityRecord last = mFocusedActivity;
        mFocusedActivity = r;
        if (r.task.isApplicationTask()) {
@@ -2783,6 +2791,12 @@ public final class ActivityManagerService extends ActivityManagerNative
            mLastFocusedUserId = mFocusedActivity.userId;
        }
        // Log a warning if the focused app is changed during the process. This could
        // indicate a problem of the focus setting logic!
        if (mFocusedActivity != r) Slog.w(TAG,
                "setFocusedActivityLocked: r=" + r + " but focused to " + mFocusedActivity);
        mDoingSetFocusedActivity = wasDoingSetFocusedActivity;
        EventLogTags.writeAmFocusedActivity(
                mFocusedActivity == null ? -1 : mFocusedActivity.userId,
                mFocusedActivity == null ? "NULL" : mFocusedActivity.shortComponentName,
+1 −1
Original line number Diff line number Diff line
@@ -583,7 +583,7 @@ public final class ActivityStackSupervisor implements DisplayListener {
        }

        final ActivityRecord r = topRunningActivityLocked();
        if (mService.mFocusedActivity != r) {
        if (!mService.mDoingSetFocusedActivity && mService.mFocusedActivity != r) {
            // The focus activity should always be the top activity in the focused stack.
            // There will be chaos and anarchy if it isn't...
            mService.setFocusedActivityLocked(r, reason + " setFocusStack");