Loading services/core/java/com/android/server/tv/TvInputManagerService.java +17 −5 Original line number Diff line number Diff line Loading @@ -626,7 +626,7 @@ public final class TvInputManagerService extends SystemService { updateServiceConnectionLocked(serviceState.component, userId); } private void createSessionInternalLocked(ITvInputService service, IBinder sessionToken, private boolean createSessionInternalLocked(ITvInputService service, IBinder sessionToken, int userId) { UserState userState = getOrCreateUserStateLocked(userId); SessionState sessionState = userState.sessionStateMap.get(sessionToken); Loading @@ -638,6 +638,7 @@ public final class TvInputManagerService extends SystemService { // Set up a callback to send the session token. ITvInputSessionCallback callback = new SessionCallback(sessionState, channels); boolean created = true; // Create a session. When failed, send a null token immediately. try { if (sessionState.isRecordingSession) { Loading @@ -647,11 +648,12 @@ public final class TvInputManagerService extends SystemService { } } catch (RemoteException e) { Slog.e(TAG, "error in createSession", e); removeSessionStateLocked(sessionToken, userId); sendSessionTokenToClientLocked(sessionState.client, sessionState.inputId, null, null, sessionState.seq); created = false; } channels[1].dispose(); return created; } private void sendSessionTokenToClientLocked(ITvInputClient client, String inputId, Loading Loading @@ -1193,8 +1195,10 @@ public final class TvInputManagerService extends SystemService { serviceState.sessionTokens.add(sessionToken); if (serviceState.service != null) { createSessionInternalLocked(serviceState.service, sessionToken, resolvedUserId); if (!createSessionInternalLocked(serviceState.service, sessionToken, resolvedUserId)) { removeSessionStateLocked(sessionToken, resolvedUserId); } } else { updateServiceConnectionLocked(info.getComponent(), resolvedUserId); } Loading Loading @@ -2282,9 +2286,17 @@ public final class TvInputManagerService extends SystemService { } } List<IBinder> tokensToBeRemoved = new ArrayList<>(); // And create sessions, if any. for (IBinder sessionToken : serviceState.sessionTokens) { createSessionInternalLocked(serviceState.service, sessionToken, mUserId); if (!createSessionInternalLocked(serviceState.service, sessionToken, mUserId)) { tokensToBeRemoved.add(sessionToken); } } for (IBinder sessionToken : tokensToBeRemoved) { removeSessionStateLocked(sessionToken, mUserId); } for (TvInputState inputState : userState.inputMap.values()) { Loading Loading
services/core/java/com/android/server/tv/TvInputManagerService.java +17 −5 Original line number Diff line number Diff line Loading @@ -626,7 +626,7 @@ public final class TvInputManagerService extends SystemService { updateServiceConnectionLocked(serviceState.component, userId); } private void createSessionInternalLocked(ITvInputService service, IBinder sessionToken, private boolean createSessionInternalLocked(ITvInputService service, IBinder sessionToken, int userId) { UserState userState = getOrCreateUserStateLocked(userId); SessionState sessionState = userState.sessionStateMap.get(sessionToken); Loading @@ -638,6 +638,7 @@ public final class TvInputManagerService extends SystemService { // Set up a callback to send the session token. ITvInputSessionCallback callback = new SessionCallback(sessionState, channels); boolean created = true; // Create a session. When failed, send a null token immediately. try { if (sessionState.isRecordingSession) { Loading @@ -647,11 +648,12 @@ public final class TvInputManagerService extends SystemService { } } catch (RemoteException e) { Slog.e(TAG, "error in createSession", e); removeSessionStateLocked(sessionToken, userId); sendSessionTokenToClientLocked(sessionState.client, sessionState.inputId, null, null, sessionState.seq); created = false; } channels[1].dispose(); return created; } private void sendSessionTokenToClientLocked(ITvInputClient client, String inputId, Loading Loading @@ -1193,8 +1195,10 @@ public final class TvInputManagerService extends SystemService { serviceState.sessionTokens.add(sessionToken); if (serviceState.service != null) { createSessionInternalLocked(serviceState.service, sessionToken, resolvedUserId); if (!createSessionInternalLocked(serviceState.service, sessionToken, resolvedUserId)) { removeSessionStateLocked(sessionToken, resolvedUserId); } } else { updateServiceConnectionLocked(info.getComponent(), resolvedUserId); } Loading Loading @@ -2282,9 +2286,17 @@ public final class TvInputManagerService extends SystemService { } } List<IBinder> tokensToBeRemoved = new ArrayList<>(); // And create sessions, if any. for (IBinder sessionToken : serviceState.sessionTokens) { createSessionInternalLocked(serviceState.service, sessionToken, mUserId); if (!createSessionInternalLocked(serviceState.service, sessionToken, mUserId)) { tokensToBeRemoved.add(sessionToken); } } for (IBinder sessionToken : tokensToBeRemoved) { removeSessionStateLocked(sessionToken, mUserId); } for (TvInputState inputState : userState.inputMap.values()) { Loading