From 66cc81ed8df87103409140547b4e017647e80d61 Mon Sep 17 00:00:00 2001 From: Alex Blasche Date: Mon, 12 May 2014 12:33:41 +0200 Subject: Code cleanup: Avoid repeated service info duplication check Change-Id: I00701e9103a6acfdfc2697949280f8a7de8bcdfe Reviewed-by: Aaron McCarthy --- src/bluetooth/qbluetoothservicediscoveryagent.cpp | 15 ++++++++ .../qbluetoothservicediscoveryagent_android.cpp | 13 +------ .../qbluetoothservicediscoveryagent_bluez.cpp | 43 ++++++---------------- src/bluetooth/qbluetoothservicediscoveryagent_p.h | 1 + .../qbluetoothservicediscoveryagent_qnx.cpp | 13 +------ 5 files changed, 29 insertions(+), 56 deletions(-) (limited to 'src/bluetooth') diff --git a/src/bluetooth/qbluetoothservicediscoveryagent.cpp b/src/bluetooth/qbluetoothservicediscoveryagent.cpp index fb9fb120..0e185990 100644 --- a/src/bluetooth/qbluetoothservicediscoveryagent.cpp +++ b/src/bluetooth/qbluetoothservicediscoveryagent.cpp @@ -509,6 +509,21 @@ void QBluetoothServiceDiscoveryAgentPrivate::_q_serviceDiscoveryFinished() startServiceDiscovery(); } +bool QBluetoothServiceDiscoveryAgentPrivate::isDuplicatedService( + const QBluetoothServiceInfo &serviceInfo) const +{ + //check the service is not already part of our known list + for (int j = 0; j < discoveredServices.count(); j++) { + const QBluetoothServiceInfo &info = discoveredServices.at(j); + if (info.device() == serviceInfo.device() + && info.serviceClassUuids() == serviceInfo.serviceClassUuids() + && info.serviceUuid() == serviceInfo.serviceUuid()) { + return true; + } + } + return false; +} + #include "moc_qbluetoothservicediscoveryagent.cpp" QT_END_NAMESPACE diff --git a/src/bluetooth/qbluetoothservicediscoveryagent_android.cpp b/src/bluetooth/qbluetoothservicediscoveryagent_android.cpp index 3d973b32..35449720 100644 --- a/src/bluetooth/qbluetoothservicediscoveryagent_android.cpp +++ b/src/bluetooth/qbluetoothservicediscoveryagent_android.cpp @@ -406,18 +406,7 @@ void QBluetoothServiceDiscoveryAgentPrivate::populateDiscoveredServices(const QB } //don't include the service if we already discovered it before - bool alreadyDiscovered = false; - for (int j = 0; j < discoveredServices.count(); j++) { - const QBluetoothServiceInfo &info = discoveredServices.at(j); - if (info.device() == serviceInfo.device() - && info.serviceClassUuids() == serviceInfo.serviceClassUuids() - && info.serviceUuid() == serviceInfo.serviceUuid()) { - alreadyDiscovered = true; - break; - } - } - - if (!alreadyDiscovered) { + if (!isDuplicatedService(serviceInfo)) { discoveredServices << serviceInfo; //qCDebug(QT_BT_ANDROID) << serviceInfo; emit q->serviceDiscovered(serviceInfo); diff --git a/src/bluetooth/qbluetoothservicediscoveryagent_bluez.cpp b/src/bluetooth/qbluetoothservicediscoveryagent_bluez.cpp index 89d93200..2f7dc726 100644 --- a/src/bluetooth/qbluetoothservicediscoveryagent_bluez.cpp +++ b/src/bluetooth/qbluetoothservicediscoveryagent_bluez.cpp @@ -355,13 +355,14 @@ void QBluetoothServiceDiscoveryAgentPrivate::_q_finishSdpScan(QBluetoothServiceD if (!serviceInfo.isValid()) continue; - discoveredServices.append(serviceInfo); - qCDebug(QT_BT_BLUEZ) << "Discovered services" << discoveredDevices.at(0).address().toString() - << serviceInfo.serviceName() << serviceInfo.serviceUuid() - << ">>>" << serviceInfo.serviceClassUuids(); + if (!isDuplicatedService(serviceInfo)) { + discoveredServices.append(serviceInfo); + qCDebug(QT_BT_BLUEZ) << "Discovered services" << discoveredDevices.at(0).address().toString() + << serviceInfo.serviceName() << serviceInfo.serviceUuid() + << ">>>" << serviceInfo.serviceClassUuids(); - // TODO check for duplicates (wait until stable has merged due to related change) - emit q->serviceDiscovered(serviceInfo); + emit q->serviceDiscovered(serviceInfo); + } // could stop discovery, check for state if (discoveryState() == Inactive) @@ -492,19 +493,7 @@ void QBluetoothServiceDiscoveryAgentPrivate::_q_discoveredServices(QDBusPendingC Q_Q(QBluetoothServiceDiscoveryAgent); - //don't include the service if we already discovered it before - bool alreadyDiscovered = false; - for (int j = 0; j < discoveredServices.count(); j++) { - const QBluetoothServiceInfo &info = discoveredServices.at(j); - if (info.device() == serviceInfo.device() - && info.serviceClassUuids() == serviceInfo.serviceClassUuids() - && info.serviceUuid() == serviceInfo.serviceUuid()) { - alreadyDiscovered = true; - break; - } - } - - if (!alreadyDiscovered) { + if (!isDuplicatedService(serviceInfo)) { discoveredServices.append(serviceInfo); qCDebug(QT_BT_BLUEZ) << "Discovered services" << discoveredDevices.at(0).address().toString() << serviceInfo.serviceName(); @@ -624,20 +613,10 @@ void QBluetoothServiceDiscoveryAgentPrivate::performMinimalServiceDiscovery(cons } //don't include the service if we already discovered it before - bool alreadyDiscovered = false; - for (int j = 0; j < discoveredServices.count(); j++) { - const QBluetoothServiceInfo &info = discoveredServices.at(j); - if (info.device() == serviceInfo.device() - && info.serviceClassUuids() == serviceInfo.serviceClassUuids() - && info.serviceUuid() == serviceInfo.serviceUuid()) { - alreadyDiscovered = true; - break; - } - } - - if (!alreadyDiscovered) { + if (!isDuplicatedService(serviceInfo)) { discoveredServices << serviceInfo; - //qCDebug(QT_BT_ANDROID) << serviceInfo; + qCDebug(QT_BT_BLUEZ) << "Discovered services" << discoveredDevices.at(0).address().toString() + << serviceInfo.serviceName(); emit q->serviceDiscovered(serviceInfo); } } diff --git a/src/bluetooth/qbluetoothservicediscoveryagent_p.h b/src/bluetooth/qbluetoothservicediscoveryagent_p.h index b3910a7e..2bf4ff72 100644 --- a/src/bluetooth/qbluetoothservicediscoveryagent_p.h +++ b/src/bluetooth/qbluetoothservicediscoveryagent_p.h @@ -133,6 +133,7 @@ public: private: void start(const QBluetoothAddress &address); void stop(); + bool isDuplicatedService(const QBluetoothServiceInfo &serviceInfo) const; #ifdef QT_BLUEZ_BLUETOOTH void startBluez5(const QBluetoothAddress &address); diff --git a/src/bluetooth/qbluetoothservicediscoveryagent_qnx.cpp b/src/bluetooth/qbluetoothservicediscoveryagent_qnx.cpp index 11882d01..d65d638d 100644 --- a/src/bluetooth/qbluetoothservicediscoveryagent_qnx.cpp +++ b/src/bluetooth/qbluetoothservicediscoveryagent_qnx.cpp @@ -306,19 +306,8 @@ void QBluetoothServiceDiscoveryAgentPrivate::remoteDevicesChanged(int fd) serviceInfo.setAttribute(QBluetoothServiceInfo::BrowseGroupList, QBluetoothUuid(QBluetoothUuid::PublicBrowseGroup)); - bool entryExists = false; //Did we already discover this service? - foreach (QBluetoothServiceInfo sInfo, q_ptr->discoveredServices()) { - if (sInfo.device() == serviceInfo.device() - && sInfo.serviceUuid() == serviceInfo.serviceUuid() - && sInfo.serviceClassUuids() == serviceInfo.serviceClassUuids()) { - entryExists = true; - //qCDebug(QT_BT_QNX) << "Entry exists" << serviceInfo.serviceClassUuids().first() << sInfo.serviceClassUuids().first(); - break; - } - } - - if (!entryExists) { + if (!isDuplicatedService(serviceInfo)) { qCDebug(QT_BT_QNX) << "Adding service" << next_service << " " << serviceInfo.socketProtocol(); discoveredServices << serviceInfo; q_ptr->serviceDiscovered(serviceInfo); -- cgit v1.2.3