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