Merge "MediaRouter: clear session info when disconnected"

This commit is contained in:
TreeHugger Robot
2020-02-10 08:10:42 +00:00
committed by Android (Google) Code Review
2 changed files with 18 additions and 2 deletions

View File

@@ -247,13 +247,23 @@ public class MediaRouter2Manager {
Objects.requireNonNull(packageName, "packageName must not be null");
Objects.requireNonNull(route, "route must not be null");
boolean transferred = false;
//TODO: instead of release all controllers, add an API to specify controllers that
// should be released (or is the system controller).
for (RoutingController controller : getRoutingControllers(packageName)) {
if (controller.getSessionInfo().getTransferrableRoutes().contains(route.getId())) {
if (!transferred && controller.getSessionInfo().getTransferrableRoutes()
.contains(route.getId())) {
controller.transferToRoute(route);
return;
transferred = true;
} else if (!controller.getSessionInfo().isSystemSession()) {
controller.release();
}
}
if (transferred) {
return;
}
Client client;
synchronized (sLock) {
client = mClient;

View File

@@ -411,6 +411,12 @@ final class MediaRoute2ProviderProxy extends MediaRoute2Provider implements Serv
mActiveConnection.dispose();
mActiveConnection = null;
setAndNotifyProviderState(null);
synchronized (mLock) {
for (RoutingSessionInfo sessionInfo : mSessionInfos) {
mCallback.onSessionReleased(this, sessionInfo);
}
mSessionInfos.clear();
}
}
}