summaryrefslogtreecommitdiffstats
path: root/src/bluetooth
diff options
context:
space:
mode:
authorAlex Blasche <alexander.blasche@qt.io>2017-08-07 08:16:45 +0200
committerAlex Blasche <alexander.blasche@qt.io>2017-08-07 08:17:26 +0200
commitc3c3837b02919a26031d917003898e72585e300b (patch)
tree02d2166f1e896327efd8a97df3455fd8359fa2be /src/bluetooth
parentaeeae7bc92f19778a73fb10a09b8949b2c384d39 (diff)
parent687ec9eb370e9538264280b58bed4d3b1c889579 (diff)
Merge remote-tracking branch 'gerrit/5.9' into dev
Diffstat (limited to 'src/bluetooth')
-rw-r--r--src/bluetooth/qbluetoothdevicediscoveryagent_android.cpp3
-rw-r--r--src/bluetooth/qbluetoothserver_winrt.cpp2
-rw-r--r--src/bluetooth/qbluetoothservicediscoveryagent.cpp8
-rw-r--r--src/bluetooth/qbluetoothserviceinfo.cpp2
-rw-r--r--src/bluetooth/qbluetoothsocket_winrt.cpp15
5 files changed, 29 insertions, 1 deletions
diff --git a/src/bluetooth/qbluetoothdevicediscoveryagent_android.cpp b/src/bluetooth/qbluetoothdevicediscoveryagent_android.cpp
index 0d6c86f9..303dd67f 100644
--- a/src/bluetooth/qbluetoothdevicediscoveryagent_android.cpp
+++ b/src/bluetooth/qbluetoothdevicediscoveryagent_android.cpp
@@ -225,6 +225,9 @@ void QBluetoothDeviceDiscoveryAgentPrivate::stop()
return;
if (m_active == SDPScanActive) {
+ if (pendingCancel)
+ return;
+
pendingCancel = true;
pendingStart = false;
bool success = adapter.callMethod<jboolean>("cancelDiscovery");
diff --git a/src/bluetooth/qbluetoothserver_winrt.cpp b/src/bluetooth/qbluetoothserver_winrt.cpp
index 61134c1f..ddd71c21 100644
--- a/src/bluetooth/qbluetoothserver_winrt.cpp
+++ b/src/bluetooth/qbluetoothserver_winrt.cpp
@@ -217,6 +217,8 @@ bool QBluetoothServer::hasPendingConnections() const
QBluetoothSocket *QBluetoothServer::nextPendingConnection()
{
Q_D(QBluetoothServer);
+ if (d->pendingConnections.count() == 0)
+ return nullptr;
ComPtr<IStreamSocket> socket = d->pendingConnections.takeFirst();
diff --git a/src/bluetooth/qbluetoothservicediscoveryagent.cpp b/src/bluetooth/qbluetoothservicediscoveryagent.cpp
index 7daab4b7..d6163f0e 100644
--- a/src/bluetooth/qbluetoothservicediscoveryagent.cpp
+++ b/src/bluetooth/qbluetoothservicediscoveryagent.cpp
@@ -450,6 +450,10 @@ void QBluetoothServiceDiscoveryAgentPrivate::startDeviceDiscovery()
*/
void QBluetoothServiceDiscoveryAgentPrivate::stopDeviceDiscovery()
{
+ // disconnect to avoid recursion during stop() - QTBUG-60131
+ // we don't care about a potential signals from device discovery agent anymore
+ deviceDiscoveryAgent->disconnect();
+
deviceDiscoveryAgent->stop();
delete deviceDiscoveryAgent;
deviceDiscoveryAgent = 0;
@@ -497,6 +501,10 @@ void QBluetoothServiceDiscoveryAgentPrivate::_q_deviceDiscoveryError(QBluetoothD
error = static_cast<QBluetoothServiceDiscoveryAgent::Error>(newError);
errorString = deviceDiscoveryAgent->errorString();
+ // disconnect to avoid recursion during stop() - QTBUG-60131
+ // we don't care about a potential signals from device discovery agent anymore
+ deviceDiscoveryAgent->disconnect();
+
deviceDiscoveryAgent->stop();
delete deviceDiscoveryAgent;
deviceDiscoveryAgent = 0;
diff --git a/src/bluetooth/qbluetoothserviceinfo.cpp b/src/bluetooth/qbluetoothserviceinfo.cpp
index d2920d78..e4e5d1ed 100644
--- a/src/bluetooth/qbluetoothserviceinfo.cpp
+++ b/src/bluetooth/qbluetoothserviceinfo.cpp
@@ -342,7 +342,7 @@ bool QBluetoothServiceInfo::unregisterService()
Construct a new invalid QBluetoothServiceInfo;
*/
QBluetoothServiceInfo::QBluetoothServiceInfo()
- : d_ptr(QSharedPointer<QBluetoothServiceInfoPrivate>(new QBluetoothServiceInfoPrivate))
+ : d_ptr(QSharedPointer<QBluetoothServiceInfoPrivate>::create())
{
}
diff --git a/src/bluetooth/qbluetoothsocket_winrt.cpp b/src/bluetooth/qbluetoothsocket_winrt.cpp
index 4e2bc11c..365fe046 100644
--- a/src/bluetooth/qbluetoothsocket_winrt.cpp
+++ b/src/bluetooth/qbluetoothsocket_winrt.cpp
@@ -422,6 +422,9 @@ QString QBluetoothSocketPrivate::localName() const
QBluetoothAddress QBluetoothSocketPrivate::localAddress() const
{
+ if (!m_socketObject)
+ return QBluetoothAddress();
+
HRESULT hr;
ComPtr<IStreamSocketInformation> info;
hr = m_socketObject->get_Information(&info);
@@ -437,6 +440,9 @@ QBluetoothAddress QBluetoothSocketPrivate::localAddress() const
quint16 QBluetoothSocketPrivate::localPort() const
{
+ if (!m_socketObject)
+ return 0;
+
HRESULT hr;
ComPtr<IStreamSocketInformation> info;
hr = m_socketObject->get_Information(&info);
@@ -449,6 +455,9 @@ quint16 QBluetoothSocketPrivate::localPort() const
QString QBluetoothSocketPrivate::peerName() const
{
+ if (!m_socketObject)
+ return QString();
+
HRESULT hr;
ComPtr<IStreamSocketInformation> info;
hr = m_socketObject->get_Information(&info);
@@ -464,6 +473,9 @@ QString QBluetoothSocketPrivate::peerName() const
QBluetoothAddress QBluetoothSocketPrivate::peerAddress() const
{
+ if (!m_socketObject)
+ return QBluetoothAddress();
+
HRESULT hr;
ComPtr<IStreamSocketInformation> info;
hr = m_socketObject->get_Information(&info);
@@ -479,6 +491,9 @@ QBluetoothAddress QBluetoothSocketPrivate::peerAddress() const
quint16 QBluetoothSocketPrivate::peerPort() const
{
+ if (!m_socketObject)
+ return 0;
+
HRESULT hr;
ComPtr<IStreamSocketInformation> info;
hr = m_socketObject->get_Information(&info);