Loading services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java +27 −34 Original line number Diff line number Diff line Loading @@ -79,7 +79,6 @@ class MediaRouter2ServiceImpl { @GuardedBy("mLock") private int mCurrentUserId = -1; MediaRouter2ServiceImpl(Context context) { mContext = context; } Loading @@ -89,17 +88,23 @@ class MediaRouter2ServiceImpl { final int uid = Binder.getCallingUid(); final int userId = UserHandle.getUserId(uid); final long token = Binder.clearCallingIdentity(); try { Collection<MediaRoute2Info> systemRoutes; synchronized (mLock) { UserRecord userRecord = mUserRecords.get(userId); if (userRecord == null) { userRecord = new UserRecord(userId); mUserRecords.put(userId, userRecord); initializeUserLocked(userRecord); UserRecord userRecord = getOrCreateUserRecordLocked(userId); MediaRoute2ProviderInfo providerInfo = userRecord.mHandler.mSystemProvider.getProviderInfo(); if (providerInfo != null) { systemRoutes = providerInfo.getRoutes(); } else { systemRoutes = Collections.emptyList(); } systemRoutes = userRecord.mHandler.mSystemProvider.getProviderInfo().getRoutes(); } return new ArrayList<>(systemRoutes); } finally { Binder.restoreCallingIdentity(token); } } public void registerClient(@NonNull IMediaRouter2Client client, Loading Loading @@ -400,12 +405,7 @@ class MediaRouter2ServiceImpl { int uid, int pid, String packageName, int userId, boolean trusted) { final IBinder binder = client.asBinder(); if (mAllClientRecords.get(binder) == null) { UserRecord userRecord = mUserRecords.get(userId); if (userRecord == null) { userRecord = new UserRecord(userId); mUserRecords.put(userId, userRecord); initializeUserLocked(userRecord); } UserRecord userRecord = getOrCreateUserRecordLocked(userId); Client2Record clientRecord = new Client2Record(userRecord, client, uid, pid, packageName, trusted); try { Loading Loading @@ -556,12 +556,7 @@ class MediaRouter2ServiceImpl { final IBinder binder = manager.asBinder(); ManagerRecord managerRecord = mAllManagerRecords.get(binder); if (managerRecord == null) { boolean newUser = false; UserRecord userRecord = mUserRecords.get(userId); if (userRecord == null) { userRecord = new UserRecord(userId); newUser = true; } UserRecord userRecord = getOrCreateUserRecordLocked(userId); managerRecord = new ManagerRecord(userRecord, manager, uid, pid, packageName, trusted); try { binder.linkToDeath(managerRecord, 0); Loading @@ -569,11 +564,6 @@ class MediaRouter2ServiceImpl { throw new RuntimeException("Media router manager died prematurely.", ex); } if (newUser) { mUserRecords.put(userId, userRecord); initializeUserLocked(userRecord); } userRecord.mManagerRecords.add(managerRecord); mAllManagerRecords.put(binder, managerRecord); Loading Loading @@ -661,15 +651,18 @@ class MediaRouter2ServiceImpl { return sessionInfos; } private void initializeUserLocked(UserRecord userRecord) { if (DEBUG) { Slog.d(TAG, userRecord + ": Initialized"); } if (userRecord.mUserId == mCurrentUserId) { private UserRecord getOrCreateUserRecordLocked(int userId) { UserRecord userRecord = mUserRecords.get(userId); if (userRecord == null) { userRecord = new UserRecord(userId); mUserRecords.put(userId, userRecord); if (userId == mCurrentUserId) { userRecord.mHandler.sendMessage( obtainMessage(UserHandler::start, userRecord.mHandler)); } } return userRecord; } private void disposeUserIfNeededLocked(UserRecord userRecord) { // If there are no records left and the user is no longer current then go ahead Loading Loading
services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java +27 −34 Original line number Diff line number Diff line Loading @@ -79,7 +79,6 @@ class MediaRouter2ServiceImpl { @GuardedBy("mLock") private int mCurrentUserId = -1; MediaRouter2ServiceImpl(Context context) { mContext = context; } Loading @@ -89,17 +88,23 @@ class MediaRouter2ServiceImpl { final int uid = Binder.getCallingUid(); final int userId = UserHandle.getUserId(uid); final long token = Binder.clearCallingIdentity(); try { Collection<MediaRoute2Info> systemRoutes; synchronized (mLock) { UserRecord userRecord = mUserRecords.get(userId); if (userRecord == null) { userRecord = new UserRecord(userId); mUserRecords.put(userId, userRecord); initializeUserLocked(userRecord); UserRecord userRecord = getOrCreateUserRecordLocked(userId); MediaRoute2ProviderInfo providerInfo = userRecord.mHandler.mSystemProvider.getProviderInfo(); if (providerInfo != null) { systemRoutes = providerInfo.getRoutes(); } else { systemRoutes = Collections.emptyList(); } systemRoutes = userRecord.mHandler.mSystemProvider.getProviderInfo().getRoutes(); } return new ArrayList<>(systemRoutes); } finally { Binder.restoreCallingIdentity(token); } } public void registerClient(@NonNull IMediaRouter2Client client, Loading Loading @@ -400,12 +405,7 @@ class MediaRouter2ServiceImpl { int uid, int pid, String packageName, int userId, boolean trusted) { final IBinder binder = client.asBinder(); if (mAllClientRecords.get(binder) == null) { UserRecord userRecord = mUserRecords.get(userId); if (userRecord == null) { userRecord = new UserRecord(userId); mUserRecords.put(userId, userRecord); initializeUserLocked(userRecord); } UserRecord userRecord = getOrCreateUserRecordLocked(userId); Client2Record clientRecord = new Client2Record(userRecord, client, uid, pid, packageName, trusted); try { Loading Loading @@ -556,12 +556,7 @@ class MediaRouter2ServiceImpl { final IBinder binder = manager.asBinder(); ManagerRecord managerRecord = mAllManagerRecords.get(binder); if (managerRecord == null) { boolean newUser = false; UserRecord userRecord = mUserRecords.get(userId); if (userRecord == null) { userRecord = new UserRecord(userId); newUser = true; } UserRecord userRecord = getOrCreateUserRecordLocked(userId); managerRecord = new ManagerRecord(userRecord, manager, uid, pid, packageName, trusted); try { binder.linkToDeath(managerRecord, 0); Loading @@ -569,11 +564,6 @@ class MediaRouter2ServiceImpl { throw new RuntimeException("Media router manager died prematurely.", ex); } if (newUser) { mUserRecords.put(userId, userRecord); initializeUserLocked(userRecord); } userRecord.mManagerRecords.add(managerRecord); mAllManagerRecords.put(binder, managerRecord); Loading Loading @@ -661,15 +651,18 @@ class MediaRouter2ServiceImpl { return sessionInfos; } private void initializeUserLocked(UserRecord userRecord) { if (DEBUG) { Slog.d(TAG, userRecord + ": Initialized"); } if (userRecord.mUserId == mCurrentUserId) { private UserRecord getOrCreateUserRecordLocked(int userId) { UserRecord userRecord = mUserRecords.get(userId); if (userRecord == null) { userRecord = new UserRecord(userId); mUserRecords.put(userId, userRecord); if (userId == mCurrentUserId) { userRecord.mHandler.sendMessage( obtainMessage(UserHandler::start, userRecord.mHandler)); } } return userRecord; } private void disposeUserIfNeededLocked(UserRecord userRecord) { // If there are no records left and the user is no longer current then go ahead Loading