summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/btdiscovery.cpp16
-rw-r--r--core/btdiscovery.h1
2 files changed, 15 insertions, 2 deletions
diff --git a/core/btdiscovery.cpp b/core/btdiscovery.cpp
index 0e071c207..5d7122414 100644
--- a/core/btdiscovery.cpp
+++ b/core/btdiscovery.cpp
@@ -404,6 +404,14 @@ void BTDiscovery::discoverAddress(QString address)
}
}
+void BTDiscovery::stopAgent()
+{
+ if (!discoveryAgent)
+ return;
+ qDebug() << "---> stopping the discovery agent";
+ discoveryAgent->stop();
+}
+
bool isBluetoothAddress(const QString &address)
{
return extractBluetoothAddress(address) != QString();
@@ -442,8 +450,10 @@ void saveBtDeviceInfo(const QString &devaddr, QBluetoothDeviceInfo deviceInfo)
QBluetoothDeviceInfo getBtDeviceInfo(const QString &devaddr)
{
- if (btDeviceInfo.contains(devaddr))
+ if (btDeviceInfo.contains(devaddr)) {
+ BTDiscovery::instance()->stopAgent();
return btDeviceInfo[devaddr];
+ }
if(!btDeviceInfo.keys().contains(devaddr)) {
qDebug() << "still looking scan is still running, we should just wait for a few moments";
// wait for a maximum of 30 more seconds
@@ -451,8 +461,10 @@ QBluetoothDeviceInfo getBtDeviceInfo(const QString &devaddr)
QElapsedTimer timer;
timer.start();
do {
- if (btDeviceInfo.keys().contains(devaddr))
+ if (btDeviceInfo.keys().contains(devaddr)) {
+ BTDiscovery::instance()->stopAgent();
return btDeviceInfo[devaddr];
+ }
QCoreApplication::processEvents(QEventLoop::AllEvents, 100);
QThread::msleep(100);
} while (timer.elapsed() < 30000);
diff --git a/core/btdiscovery.h b/core/btdiscovery.h
index d6c25d8b0..d3a81bf39 100644
--- a/core/btdiscovery.h
+++ b/core/btdiscovery.h
@@ -47,6 +47,7 @@ public:
void btDeviceDiscoveredMain(const btPairedDevice &device);
bool btAvailable() const;
void showNonDiveComputers(bool show);
+ void stopAgent();
#if defined(Q_OS_ANDROID)
void getBluetoothDevices();