From 38d06dffd3f886ad3f999ef70eeee66abfa4fd82 Mon Sep 17 00:00:00 2001 From: Hyundo Moon Date: Wed, 20 May 2020 14:24:06 +0900 Subject: MediaRouter2ServiceImpl: Remove unnecessary notification to managers When registering a new manager, unnecessary notifications happen. This CL removes them. Bug: 145490491 Test: Passed CTS and mediaroutertest Change-Id: I1d309ea47a537cb855639be9a72268111851ef2e --- .../android/server/media/MediaRouter2ServiceImpl.java | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java b/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java index d7bd794743d4..c65800a17f82 100644 --- a/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java +++ b/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java @@ -808,14 +808,11 @@ class MediaRouter2ServiceImpl { userRecord.mHandler, manager)); for (RouterRecord routerRecord : userRecord.mRouterRecords) { - // TODO: Do not use notifyPreferredFeaturesChangedToManagers since it updates all - // managers. Instead, Notify only to the manager that is currently being registered. - // TODO: UserRecord <-> routerRecord, why do they reference each other? // How about removing mUserRecord from routerRecord? routerRecord.mUserRecord.mHandler.sendMessage( - obtainMessage(UserHandler::notifyPreferredFeaturesChangedToManagers, - routerRecord.mUserRecord.mHandler, routerRecord)); + obtainMessage(UserHandler::notifyPreferredFeaturesChangedToManager, + routerRecord.mUserRecord.mHandler, routerRecord, manager)); } } @@ -1928,6 +1925,17 @@ class MediaRouter2ServiceImpl { } } + private void notifyPreferredFeaturesChangedToManager(@NonNull RouterRecord routerRecord, + @NonNull IMediaRouter2Manager manager) { + try { + manager.notifyPreferredFeaturesChanged(routerRecord.mPackageName, + routerRecord.mDiscoveryPreference.getPreferredFeatures()); + } catch (RemoteException ex) { + Slog.w(TAG, "Failed to notify preferred features changed." + + " Manager probably died.", ex); + } + } + private void notifyPreferredFeaturesChangedToManagers(@NonNull RouterRecord routerRecord) { MediaRouter2ServiceImpl service = mServiceRef.get(); if (service == null) { -- cgit v1.2.3-59-g8ed1b