diff options
Diffstat (limited to 'src/bluetooth/qbluetoothdevicediscoveryagent_android.cpp')
-rw-r--r-- | src/bluetooth/qbluetoothdevicediscoveryagent_android.cpp | 33 |
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; } } |