summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJuha Vuolle <juha.vuolle@insta.fi>2022-02-08 13:22:29 +0200
committerJuha Vuolle <juha.vuolle@insta.fi>2022-02-12 17:17:03 +0200
commit788c4980e67386d2407c4c7bc7182430fc9054c3 (patch)
treebebee4105dea6be7e7fbbd362c18018ce189e13f
parentbbaf941d54748f540d6fe88453983cb08a3c26b3 (diff)
Avoid multiple client sockets in pingpong bluetooth example
This commit guards against creating multiple client sockets if multiple services are found. In addition the service scanning is stopped when a service has been found and we start connecting a bluetooth socket. Fixes: QTBUG-100289 Pick-to: 5.15 6.2 6.3 Change-Id: Iac2e7eaca17a186ac2d2f62e338be16911f08032 Reviewed-by: Ivan Solovev <ivan.solovev@qt.io> Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
-rw-r--r--examples/bluetooth/pingpong/pingpong.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/examples/bluetooth/pingpong/pingpong.cpp b/examples/bluetooth/pingpong/pingpong.cpp
index 8a91e397..07f3360e 100644
--- a/examples/bluetooth/pingpong/pingpong.cpp
+++ b/examples/bluetooth/pingpong/pingpong.cpp
@@ -354,7 +354,12 @@ void PingPong::done()
void PingPong::addService(const QBluetoothServiceInfo &service)
{
- setMessage("Service found. Setting parameters...");
+ if (m_serviceFound)
+ return;
+ m_serviceFound = true;
+
+ setMessage("Service found. Stopping discovery and creating connection...");
+ discoveryAgent->stop();
//! [Connecting the socket]
socket = new QBluetoothSocket(QBluetoothServiceInfo::RfcommProtocol);
socket->connectToService(service);
@@ -363,7 +368,6 @@ void PingPong::addService(const QBluetoothServiceInfo &service)
connect(socket, &QBluetoothSocket::connected, this, &PingPong::serverConnected);
connect(socket, &QBluetoothSocket::disconnected, this, &PingPong::serverDisconnected);
//! [Connecting the socket]
- m_serviceFound = true;
}
void PingPong::serviceScanError(QBluetoothServiceDiscoveryAgent::Error error)