summaryrefslogtreecommitdiffstats
path: root/src/bluetooth/qbluetoothdevicediscoveryagent_android.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/bluetooth/qbluetoothdevicediscoveryagent_android.cpp')
-rw-r--r--src/bluetooth/qbluetoothdevicediscoveryagent_android.cpp33
1 files changed, 22 insertions, 11 deletions
diff --git a/src/bluetooth/qbluetoothdevicediscoveryagent_android.cpp b/src/bluetooth/qbluetoothdevicediscoveryagent_android.cpp
index 50f3aef9..443be14d 100644
--- a/src/bluetooth/qbluetoothdevicediscoveryagent_android.cpp
+++ b/src/bluetooth/qbluetoothdevicediscoveryagent_android.cpp
@@ -88,6 +88,9 @@ QBluetoothDeviceDiscoveryAgentPrivate::~QBluetoothDeviceDiscoveryAgentPrivate()
if (m_active != NoScanActive)
stop();
+ if (leScanner.isValid())
+ leScanner.setField<jlong>("qtObject", reinterpret_cast<jlong>(nullptr));
+
if (receiver) {
receiver->unregisterReceiver();
delete receiver;
@@ -332,21 +335,29 @@ void QBluetoothDeviceDiscoveryAgentPrivate::processDiscoveredDevices(
updatedFields.setFlag(QBluetoothDeviceInfo::Field::ManufacturerData);
}
- if (!updatedFields.testFlag(QBluetoothDeviceInfo::Field::None)) {
- emit q->deviceUpdated(discoveredDevices[i], updatedFields);
+ if (lowEnergySearchTimeout > 0) {
+ if (discoveredDevices[i] != info) {
+ if (discoveredDevices.at(i).name() == info.name()) {
+ qCDebug(QT_BT_ANDROID) << "Almost Duplicate " << info.address()
+ << info.name() << "- replacing in place";
+ discoveredDevices.replace(i, info);
+ emit q->deviceDiscovered(info);
+ }
+ } else {
+ if (!updatedFields.testFlag(QBluetoothDeviceInfo::Field::None))
+ emit q->deviceUpdated(discoveredDevices[i], updatedFields);
+ }
+
return;
}
- if (discoveredDevices[i] == info)
- return;
+ discoveredDevices.replace(i, info);
+ emit q->deviceDiscovered(info);
- if (discoveredDevices.at(i).name() == info.name()) {
- qCDebug(QT_BT_ANDROID) << "Almost Duplicate "<< info.address()
- << info.name() << "- replacing in place";
- discoveredDevices.replace(i, info);
- emit q->deviceDiscovered(info);
- return;
- }
+ if (!updatedFields.testFlag(QBluetoothDeviceInfo::Field::None))
+ emit q->deviceUpdated(discoveredDevices[i], updatedFields);
+
+ return;
}
}