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

Commit 182b4163 authored by Treehugger Robot's avatar Treehugger Robot Committed by Automerger Merge Worker
Browse files

Merge "SystemServer: fix an infinite loop in TvInputManagerService [1/1]" am:...

Merge "SystemServer: fix an infinite loop in TvInputManagerService [1/1]" am: deb1024b am: 839fca8a

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1512821

Change-Id: Idcd8114385be347e2f111d836200cf1f81f51ebd
parents 6948e002 839fca8a
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -714,6 +714,7 @@ public final class TvInputManagerService extends SystemService {
        SessionState sessionState = userState.sessionStateMap.remove(sessionToken);

        if (sessionState == null) {
            Slog.e(TAG, "sessionState null, no more remove session action!");
            return;
        }

@@ -2278,8 +2279,16 @@ public final class TvInputManagerService extends SystemService {
                ClientState clientState = userState.clientStateMap.get(clientToken);
                if (clientState != null) {
                    while (clientState.sessionTokens.size() > 0) {
                        IBinder sessionToken = clientState.sessionTokens.get(0);
                        releaseSessionLocked(
                                clientState.sessionTokens.get(0), Process.SYSTEM_UID, userId);
                                sessionToken, Process.SYSTEM_UID, userId);
                        // the releaseSessionLocked function may return before the sessionToken
                        // is removed if the related sessionState is null. So need to check again
                        // to avoid death curculation.
                        if (clientState.sessionTokens.contains(sessionToken)) {
                            Slog.d(TAG, "remove sessionToken " + sessionToken + " for " + clientToken);
                            clientState.sessionTokens.remove(sessionToken);
                        }
                    }
                }
                clientToken = null;