diff --git a/core/java/android/preference/Preference.java b/core/java/android/preference/Preference.java index 37a8102368321..f7d1eb72f0802 100644 --- a/core/java/android/preference/Preference.java +++ b/core/java/android/preference/Preference.java @@ -1069,11 +1069,11 @@ public class Preference implements Comparable { * @return 0 if the same; less than 0 if this Preference sorts ahead of another; * greater than 0 if this Preference sorts after another. */ + @Override public int compareTo(Preference another) { - if (mOrder != DEFAULT_ORDER - || (mOrder == DEFAULT_ORDER && another.mOrder != DEFAULT_ORDER)) { + if (mOrder != another.mOrder) { // Do order comparison - return mOrder - another.mOrder; + return mOrder - another.mOrder; } else if (mTitle == another.mTitle) { // If titles are null or share same object comparison return 0; diff --git a/core/res/res/drawable-hdpi/ic_notify_wifidisplay.png b/core/res/res/drawable-hdpi/ic_notify_wifidisplay.png deleted file mode 100644 index 35f27df17260c..0000000000000 Binary files a/core/res/res/drawable-hdpi/ic_notify_wifidisplay.png and /dev/null differ diff --git a/core/res/res/drawable-mdpi/ic_notify_wifidisplay.png b/core/res/res/drawable-mdpi/ic_notify_wifidisplay.png deleted file mode 100644 index f9c8678f7f644..0000000000000 Binary files a/core/res/res/drawable-mdpi/ic_notify_wifidisplay.png and /dev/null differ diff --git a/core/res/res/drawable-xhdpi/ic_notify_wifidisplay.png b/core/res/res/drawable-xhdpi/ic_notify_wifidisplay.png deleted file mode 100644 index 4cc0ee83faf89..0000000000000 Binary files a/core/res/res/drawable-xhdpi/ic_notify_wifidisplay.png and /dev/null differ diff --git a/core/res/res/drawable-xxhdpi/ic_notify_wifidisplay.png b/core/res/res/drawable-xxhdpi/ic_notify_wifidisplay.png deleted file mode 100644 index fea4774c8d727..0000000000000 Binary files a/core/res/res/drawable-xxhdpi/ic_notify_wifidisplay.png and /dev/null differ diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index cfdd64cf1d664..ee64bf94ab983 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -1452,7 +1452,6 @@ - diff --git a/media/java/android/media/MediaRouter.java b/media/java/android/media/MediaRouter.java index 27b5451dc9027..fb753c55b3bfa 100644 --- a/media/java/android/media/MediaRouter.java +++ b/media/java/android/media/MediaRouter.java @@ -59,7 +59,7 @@ public class MediaRouter { static class Static implements DisplayManager.DisplayListener { // Time between wifi display scans when actively scanning in milliseconds. - private static final int WIFI_DISPLAY_SCAN_INTERVAL = 15000; + private static final int WIFI_DISPLAY_SCAN_INTERVAL = 10000; final Context mAppContext; final Resources mResources; @@ -82,7 +82,6 @@ public class MediaRouter { RouteInfo mSelectedRoute; - WifiDisplayStatus mLastKnownWifiDisplayStatus; boolean mActivelyScanningWifiDisplays; int mDiscoveryRequestRouteTypes; @@ -1244,60 +1243,57 @@ public class MediaRouter { } } - static void updateWifiDisplayStatus(WifiDisplayStatus newStatus) { - final WifiDisplayStatus oldStatus = sStatic.mLastKnownWifiDisplayStatus; - - // TODO Naive implementation. Make this smarter later. + static void updateWifiDisplayStatus(WifiDisplayStatus status) { boolean wantScan = false; - boolean blockScan = false; - WifiDisplay[] oldDisplays = oldStatus != null ? - oldStatus.getDisplays() : WifiDisplay.EMPTY_ARRAY; - WifiDisplay[] newDisplays; + WifiDisplay[] displays; WifiDisplay activeDisplay; - if (newStatus.getFeatureState() == WifiDisplayStatus.FEATURE_STATE_ON) { - newDisplays = newStatus.getDisplays(); - activeDisplay = newStatus.getActiveDisplay(); + if (status.getFeatureState() == WifiDisplayStatus.FEATURE_STATE_ON) { + displays = status.getDisplays(); + activeDisplay = status.getActiveDisplay(); } else { - newDisplays = WifiDisplay.EMPTY_ARRAY; + displays = WifiDisplay.EMPTY_ARRAY; activeDisplay = null; } - for (int i = 0; i < newDisplays.length; i++) { - final WifiDisplay d = newDisplays[i]; - if (d.isRemembered()) { + // Add or update routes. + for (int i = 0; i < displays.length; i++) { + final WifiDisplay d = displays[i]; + if (shouldShowWifiDisplay(d, activeDisplay)) { RouteInfo route = findWifiDisplayRoute(d); if (route == null) { - route = makeWifiDisplayRoute(d, newStatus); + route = makeWifiDisplayRoute(d, status); addRouteStatic(route); wantScan = true; } else { - updateWifiDisplayRoute(route, d, newStatus); + updateWifiDisplayRoute(route, d, status); } if (d.equals(activeDisplay)) { selectRouteStatic(route.getSupportedTypes(), route, false); - - // 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++) { - final WifiDisplay d = oldDisplays[i]; - if (d.isRemembered()) { - final WifiDisplay newDisplay = findMatchingDisplay(d, newDisplays); - if (newDisplay == null || !newDisplay.isRemembered()) { - removeRouteStatic(findWifiDisplayRoute(d)); } } } - if (wantScan && !blockScan) { + // Remove stale routes. + for (int i = sStatic.mRoutes.size(); i-- > 0; ) { + RouteInfo route = sStatic.mRoutes.get(i); + if (route.mDeviceAddress != null) { + WifiDisplay d = findWifiDisplay(displays, route.mDeviceAddress); + if (d == null || !shouldShowWifiDisplay(d, activeDisplay)) { + removeRouteStatic(route); + } + } + } + + // Don't scan if we're already connected to a wifi display, + // the scanning process can cause a hiccup with some configurations. + if (wantScan && activeDisplay != null) { sStatic.mDisplayService.scanWifiDisplays(); } + } - sStatic.mLastKnownWifiDisplayStatus = newStatus; + private static boolean shouldShowWifiDisplay(WifiDisplay d, WifiDisplay activeDisplay) { + return d.isRemembered() || d.equals(activeDisplay); } static int getWifiDisplayStatusCode(WifiDisplay d, WifiDisplayStatus wfdStatus) { @@ -1375,11 +1371,11 @@ public class MediaRouter { } } - private static WifiDisplay findMatchingDisplay(WifiDisplay d, WifiDisplay[] displays) { + private static WifiDisplay findWifiDisplay(WifiDisplay[] displays, String deviceAddress) { for (int i = 0; i < displays.length; i++) { - final WifiDisplay other = displays[i]; - if (d.hasSameAddress(other)) { - return other; + final WifiDisplay d = displays[i]; + if (d.getDeviceAddress().equals(deviceAddress)) { + return d; } } return null; @@ -1804,6 +1800,11 @@ public class MediaRouter { return null; } + /** @hide */ + public String getDeviceAddress() { + return mDeviceAddress; + } + /** * Returns true if this route is enabled and may be selected. * diff --git a/services/java/com/android/server/display/WifiDisplayAdapter.java b/services/java/com/android/server/display/WifiDisplayAdapter.java index f7bbdf8246bb7..99f8ebb6f0ca9 100644 --- a/services/java/com/android/server/display/WifiDisplayAdapter.java +++ b/services/java/com/android/server/display/WifiDisplayAdapter.java @@ -499,7 +499,7 @@ final class WifiDisplayAdapter extends DisplayAdapter { .setContentText(r.getString( R.string.wifi_display_notification_message)) .setContentIntent(mSettingsPendingIntent) - .setSmallIcon(R.drawable.ic_notify_wifidisplay) + .setSmallIcon(R.drawable.ic_media_route_on_holo_dark) .setOngoing(true) .addAction(android.R.drawable.ic_menu_close_clear_cancel, r.getString(R.string.wifi_display_notification_disconnect),