diff options
author | Alex Blasche <alexander.blasche@qt.io> | 2017-08-07 08:16:45 +0200 |
---|---|---|
committer | Alex Blasche <alexander.blasche@qt.io> | 2017-08-07 08:17:26 +0200 |
commit | c3c3837b02919a26031d917003898e72585e300b (patch) | |
tree | 02d2166f1e896327efd8a97df3455fd8359fa2be /src/bluetooth | |
parent | aeeae7bc92f19778a73fb10a09b8949b2c384d39 (diff) | |
parent | 687ec9eb370e9538264280b58bed4d3b1c889579 (diff) |
Merge remote-tracking branch 'gerrit/5.9' into dev
Change-Id: I0ed4afd881f483a166a7e1400043f116c491f30c
Diffstat (limited to 'src/bluetooth')
-rw-r--r-- | src/bluetooth/qbluetoothdevicediscoveryagent_android.cpp | 3 | ||||
-rw-r--r-- | src/bluetooth/qbluetoothserver_winrt.cpp | 2 | ||||
-rw-r--r-- | src/bluetooth/qbluetoothservicediscoveryagent.cpp | 8 | ||||
-rw-r--r-- | src/bluetooth/qbluetoothserviceinfo.cpp | 2 | ||||
-rw-r--r-- | src/bluetooth/qbluetoothsocket_winrt.cpp | 15 |
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); |