From 2444ae7e2b8658a4a90f996e678423558744b4a2 Mon Sep 17 00:00:00 2001 From: Jeff Brown Date: Thu, 11 Oct 2012 14:30:21 -0700 Subject: Ensure MediaRouter correctly handles renamed Wifi displays. Fix a couple of bugs that cause MediaRouter to disconnect from the current Wifi display whenever it is renamed. Added an extra check in WifiDisplayAdapter for identity renames. The Settings app already handles this case but it's good to have the service check for it as well so we don't store unnecessary aliases. Bug: 7310777 Change-Id: I8fddd32ca59f9b798ee31b467b81457508c345f8 --- media/java/android/media/MediaRouter.java | 22 +++++++--------------- 1 file changed, 7 insertions(+), 15 deletions(-) (limited to 'media/java') diff --git a/media/java/android/media/MediaRouter.java b/media/java/android/media/MediaRouter.java index 8e9384ee..82ed432 100644 --- a/media/java/android/media/MediaRouter.java +++ b/media/java/android/media/MediaRouter.java @@ -751,18 +751,10 @@ public class MediaRouter { RouteInfo.STATUS_AVAILABLE : RouteInfo.STATUS_CONNECTING); newRoute.mEnabled = available; - newRoute.mName = makeWifiDisplayName(display); + newRoute.mName = display.getFriendlyDisplayName(); return newRoute; } - static String makeWifiDisplayName(WifiDisplay display) { - String name = display.getDeviceAlias(); - if (TextUtils.isEmpty(name)) { - name = display.getDeviceName(); - } - return name; - } - private static void updateWifiDisplayRoute(RouteInfo route, WifiDisplay display, boolean available, WifiDisplayStatus wifiDisplayStatus) { final boolean isScanning = @@ -792,8 +784,8 @@ public class MediaRouter { } } - final String newName = makeWifiDisplayName(display); - if (route.getName().equals(newName)) { + final String newName = display.getFriendlyDisplayName(); + if (!route.getName().equals(newName)) { route.mName = newName; changed = true; } @@ -814,11 +806,11 @@ public class MediaRouter { } } - private static WifiDisplay findMatchingDisplay(WifiDisplay address, WifiDisplay[] displays) { + private static WifiDisplay findMatchingDisplay(WifiDisplay d, WifiDisplay[] displays) { for (int i = 0; i < displays.length; i++) { - final WifiDisplay d = displays[i]; - if (d.equals(address)) { - return d; + final WifiDisplay other = displays[i]; + if (d.getDeviceAddress().equals(other.getDeviceAddress())) { + return other; } } return null; -- cgit v1.1