From 77e59fef24c02a109bb409afe38dbdf28e1fd914 Mon Sep 17 00:00:00 2001 From: Jeff Brown Date: Thu, 9 May 2013 13:41:11 -0700 Subject: [PATCH] Fix bug managing wifi display routes. We could sometimes crash due to some inconsistencies in the way the wifi display routes were updates when connecting, disconnecting or scanning wifi displays. Bug: 8837094 Change-Id: I10c7ccb163ec33c4ea107dfcb5074741049fe955 --- media/java/android/media/MediaRouter.java | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/media/java/android/media/MediaRouter.java b/media/java/android/media/MediaRouter.java index 61c55a58e5efe..9e8aeeb8a6e81 100644 --- a/media/java/android/media/MediaRouter.java +++ b/media/java/android/media/MediaRouter.java @@ -783,25 +783,21 @@ public class MediaRouter { for (int i = 0; i < newDisplays.length; i++) { final WifiDisplay d = newDisplays[i]; - final WifiDisplay oldRemembered = findMatchingDisplay(d, oldDisplays); - if (oldRemembered == null) { - addRouteStatic(makeWifiDisplayRoute(d, - findMatchingDisplay(d, availableDisplays) != null)); + final boolean available = findMatchingDisplay(d, availableDisplays) != null; + RouteInfo route = findWifiDisplayRoute(d); + if (route == null) { + route = makeWifiDisplayRoute(d, available); + addRouteStatic(route); wantScan = true; } else { - final boolean available = findMatchingDisplay(d, availableDisplays) != null; - final RouteInfo route = findWifiDisplayRoute(d); updateWifiDisplayRoute(route, d, available, newStatus); } if (d.equals(activeDisplay)) { - final RouteInfo activeRoute = findWifiDisplayRoute(d); - if (activeRoute != null) { - selectRouteStatic(activeRoute.getSupportedTypes(), activeRoute); + selectRouteStatic(route.getSupportedTypes(), route); - // Don't scan if we're already connected to a wifi display, - // the scanning process can cause a hiccup with some configurations. - blockScan = true; - } + // Don't scan if we're already connected to a wifi display, + // the scanning process can cause a hiccup with some configurations. + blockScan = true; } } for (int i = 0; i < oldDisplays.length; i++) {