From 226a51958d645a8e2be3e40a6b6daaca558b4913 Mon Sep 17 00:00:00 2001 From: Jaewan Kim Date: Tue, 24 Jun 2014 16:59:48 +0900 Subject: [PATCH] Update service connections when TV input list is updated Bug: 15738607 Change-Id: Ie2d24d0c36308e6757b7d6939d79874c3bdd7211 --- .../java/com/android/server/tv/TvInputManagerService.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/services/core/java/com/android/server/tv/TvInputManagerService.java b/services/core/java/com/android/server/tv/TvInputManagerService.java index 6798f3fb97be4..61fdaccba8d6b 100644 --- a/services/core/java/com/android/server/tv/TvInputManagerService.java +++ b/services/core/java/com/android/server/tv/TvInputManagerService.java @@ -214,6 +214,9 @@ public final class TvInputManagerService extends SystemService { if (DEBUG) Slog.d(TAG, "add " + info.getId()); userState.inputMap.put(info.getId(), info); userState.packageList.add(si.packageName); + + // Reconnect the service if existing input is updated. + updateServiceConnectionLocked(info.getId(), userId); } catch (IOException | XmlPullParserException e) { Slog.e(TAG, "Can't load TV input " + si.name, e); } @@ -353,6 +356,9 @@ public final class TvInputManagerService extends SystemService { Intent i = new Intent(TvInputService.SERVICE_INTERFACE).setComponent( userState.inputMap.get(inputId).getComponent()); + // Binding service may fail if the service is updating. + // In that case, the connection will be revived in buildTvInputListLocked called by + // onSomePackagesChanged. serviceState.mBound = mContext.bindServiceAsUser( i, serviceState.mConnection, Context.BIND_AUTO_CREATE, new UserHandle(userId)); } else if (serviceState.mService != null && isStateEmpty) {