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

Commit b266bdcc authored by Dongwon Kang's avatar Dongwon Kang Committed by Android Git Automerger
Browse files

am 4146f007: am 62df6072: Merge "TIF: fix callback cleanup logic in...

am 4146f007: am 62df6072: Merge "TIF: fix callback cleanup logic in removeSessionStateLocked()." into lmp-dev

* commit '4146f007d65d52f75ce7781562747d2c15a892f1':
  TIF: fix callback cleanup logic in removeSessionStateLocked().
parents 17f7fa5c f0285d8c
Loading
Loading
Loading
Loading
+7 −7
Original line number Original line Diff line number Diff line
@@ -467,15 +467,19 @@ public final class TvInputManagerService extends SystemService {
            String inputId, int userId) {
            String inputId, int userId) {
        // Let clients know the create session requests are failed.
        // Let clients know the create session requests are failed.
        UserState userState = getUserStateLocked(userId);
        UserState userState = getUserStateLocked(userId);
        List<SessionState> sessionsToAbort = new ArrayList<>();
        for (IBinder sessionToken : serviceState.mSessionTokens) {
        for (IBinder sessionToken : serviceState.mSessionTokens) {
            SessionState sessionState = userState.sessionStateMap.get(sessionToken);
            SessionState sessionState = userState.sessionStateMap.get(sessionToken);
            if (sessionState.mSession == null && (inputId == null
            if (sessionState.mSession == null && (inputId == null
                    || sessionState.mInfo.getId().equals(inputId))) {
                    || sessionState.mInfo.getId().equals(inputId))) {
                removeSessionStateLocked(sessionToken, sessionState.mUserId);
                sessionsToAbort.add(sessionState);
            }
        }
        for (SessionState sessionState : sessionsToAbort) {
            removeSessionStateLocked(sessionState.mSessionToken, sessionState.mUserId);
            sendSessionTokenToClientLocked(sessionState.mClient,
            sendSessionTokenToClientLocked(sessionState.mClient,
                    sessionState.mInfo.getId(), null, null, sessionState.mSeq);
                    sessionState.mInfo.getId(), null, null, sessionState.mSeq);
        }
        }
        }
        updateServiceConnectionLocked(serviceState.mComponent, userId);
        updateServiceConnectionLocked(serviceState.mComponent, userId);
    }
    }


@@ -759,10 +763,6 @@ public final class TvInputManagerService extends SystemService {
            clientState.mSessionTokens.remove(sessionToken);
            clientState.mSessionTokens.remove(sessionToken);
            if (clientState.isEmpty()) {
            if (clientState.isEmpty()) {
                userState.clientStateMap.remove(sessionState.mClient.asBinder());
                userState.clientStateMap.remove(sessionState.mClient.asBinder());
                if (userState.clientStateMap.isEmpty()) {
                    // No longer need to keep the callbacks since there is no client.
                    userState.callbackSet.clear();
                }
            }
            }
        }
        }