diff options
author | Eugene Susla <eugenesusla@google.com> | 2020-07-30 14:39:50 -0700 |
---|---|---|
committer | Eugene Susla <eugenesusla@google.com> | 2020-08-03 18:40:04 +0000 |
commit | b8b53f3b393288314da8ef27f6165cd291110835 (patch) | |
tree | 00162d6698b1c4131cd1280ca2ac3bdf27721650 /packages/CompanionDeviceManager/src | |
parent | afab5784eab6f6ef093ad3a34da72cc7f9cf6c6c (diff) |
Fix duplicate devices when multiple mediums scanning requested
The dedupuing logic was already in place, but there was a race
due to managin the list of devices from different threads.
Test: using wear app ensure dup device reproduses without CL, and not with it
Fixes: 160870456
Change-Id: I1526199e8e4fb4b8f7d7f306e9e676359cdca516
Diffstat (limited to 'packages/CompanionDeviceManager/src')
-rw-r--r-- | packages/CompanionDeviceManager/src/com/android/companiondevicemanager/DeviceDiscoveryService.java | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/DeviceDiscoveryService.java b/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/DeviceDiscoveryService.java index 7aa997e39307..a62c287ece41 100644 --- a/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/DeviceDiscoveryService.java +++ b/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/DeviceDiscoveryService.java @@ -259,18 +259,19 @@ public class DeviceDiscoveryService extends Service { private void onDeviceFound(@Nullable DeviceFilterPair device) { if (device == null) return; - if (mDevicesFound.contains(device)) { - return; - } - - if (DEBUG) Log.i(LOG_TAG, "Found device " + device); - Handler.getMain().sendMessage(obtainMessage( DeviceDiscoveryService::onDeviceFoundMainThread, this, device)); } @MainThread void onDeviceFoundMainThread(@NonNull DeviceFilterPair device) { + if (mDevicesFound.contains(device)) { + Log.i(LOG_TAG, "Skipping device " + device + " - already among found devices"); + return; + } + + Log.i(LOG_TAG, "Found device " + device); + if (mDevicesFound.isEmpty()) { onReadyToShowUI(); } @@ -432,10 +433,10 @@ public class DeviceDiscoveryService extends Service { @Override public String toString() { - return "DeviceFilterPair{" + - "device=" + device + - ", filter=" + filter + - '}'; + return "DeviceFilterPair{" + + "device=" + device + " " + getDisplayName() + + ", filter=" + filter + + '}'; } } |