From d1cf8dad0e6d8d08b5c6f2f08d85a0e75b0bcf8a Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Thu, 8 Nov 2018 11:27:05 +0100 Subject: Bump version Change-Id: I33e9b58cc7e968740380335e58e0093f496c3387 --- .qmake.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.qmake.conf b/.qmake.conf index 76c202ab..d920a9c6 100644 --- a/.qmake.conf +++ b/.qmake.conf @@ -1,3 +1,3 @@ load(qt_build_config) -MODULE_VERSION = 5.11.2 +MODULE_VERSION = 5.11.3 -- cgit v1.2.3 From 4821972696716f988b4b92f22a9a552be15c5401 Mon Sep 17 00:00:00 2001 From: Oliver Wolff Date: Wed, 31 Oct 2018 11:05:50 +0100 Subject: qbluetoothlocaldevice_p.cpp: Make sure d_ptr is initialized Backends that still use qbluetoothlocaldevce_p.cpp (namely ios and winrt) overload QBluetoothLocalDevicePrivate::isValid. While it does not make a difference for ios (as false is returned if no d_ptr is initialized) local device will be seen as invalid on winrt if there is no d_ptr. Fixes: QTBUG-67090 Change-Id: I82dfa4563be0ed4800f0a8dd2a9ccfc3fe313e3b Reviewed-by: Qt CI Bot Reviewed-by: Timur Pocheptsov --- src/bluetooth/qbluetoothlocaldevice_p.cpp | 6 ++--- src/bluetooth/qbluetoothlocaldevice_p.h | 29 ++++++---------------- .../auto/qbluetoothserver/tst_qbluetoothserver.cpp | 4 +-- 3 files changed, 12 insertions(+), 27 deletions(-) diff --git a/src/bluetooth/qbluetoothlocaldevice_p.cpp b/src/bluetooth/qbluetoothlocaldevice_p.cpp index b93de6a9..793a8311 100644 --- a/src/bluetooth/qbluetoothlocaldevice_p.cpp +++ b/src/bluetooth/qbluetoothlocaldevice_p.cpp @@ -49,7 +49,7 @@ QT_BEGIN_NAMESPACE QBluetoothLocalDevice::QBluetoothLocalDevice(QObject *parent) : QObject(parent), - d_ptr(nullptr) + d_ptr(new QBluetoothLocalDevicePrivate(this, QBluetoothAddress())) { #if !defined(QT_IOS_BLUETOOTH) && !defined(QT_WINRT_BLUETOOTH) printDummyWarning(); @@ -57,9 +57,9 @@ QBluetoothLocalDevice::QBluetoothLocalDevice(QObject *parent) : registerQBluetoothLocalDeviceMetaType(); } -QBluetoothLocalDevice::QBluetoothLocalDevice(const QBluetoothAddress &, QObject *parent) : +QBluetoothLocalDevice::QBluetoothLocalDevice(const QBluetoothAddress &address, QObject *parent) : QObject(parent), - d_ptr(nullptr) + d_ptr(new QBluetoothLocalDevicePrivate(this, address)) { registerQBluetoothLocalDeviceMetaType(); } diff --git a/src/bluetooth/qbluetoothlocaldevice_p.h b/src/bluetooth/qbluetoothlocaldevice_p.h index 89dbf9a3..98c62151 100644 --- a/src/bluetooth/qbluetoothlocaldevice_p.h +++ b/src/bluetooth/qbluetoothlocaldevice_p.h @@ -208,37 +208,22 @@ private: void initializeAdapter(); void initializeAdapterBluez5(); }; -#elif defined(QT_WINRT_BLUETOOTH) +#elif !defined(QT_OSX_BLUETOOTH) // winrt and dummy backend class QBluetoothLocalDevicePrivate : public QObject { public: - QBluetoothLocalDevicePrivate(QBluetoothLocalDevice *q, - QBluetoothAddress localAddress = QBluetoothAddress()) - : q_ptr(q) - { - Q_UNUSED(localAddress); - } - - ~QBluetoothLocalDevicePrivate() - { - } - - - bool isValid() const + QBluetoothLocalDevicePrivate(QBluetoothLocalDevice * = nullptr, + QBluetoothAddress = QBluetoothAddress()) { - return true; } -private: - QBluetoothLocalDevice *q_ptr; -}; -#elif !defined(QT_OSX_BLUETOOTH) -class QBluetoothLocalDevicePrivate : public QObject -{ -public: bool isValid() const { +#ifndef QT_WINRT_BLUETOOTH return false; +#else + return true; +#endif } }; #endif diff --git a/tests/auto/qbluetoothserver/tst_qbluetoothserver.cpp b/tests/auto/qbluetoothserver/tst_qbluetoothserver.cpp index acc498cc..4564cf4d 100644 --- a/tests/auto/qbluetoothserver/tst_qbluetoothserver.cpp +++ b/tests/auto/qbluetoothserver/tst_qbluetoothserver.cpp @@ -185,11 +185,11 @@ void tst_QBluetoothServer::tst_receive() bool localDeviceAvailable = localDev.isValid(); if (localDeviceAvailable) { - // setHostMode is noop on OS X. + // setHostMode is noop on OS X and winrt. setHostMode(address, hostmode); if (hostmode == QBluetoothLocalDevice::HostPoweredOff) { -#ifndef Q_OS_OSX +#if !defined(Q_OS_OSX) && !QT_CONFIG(winrt_bt) QCOMPARE(localDevice.hostMode(), hostmode); #endif } else { -- cgit v1.2.3 From 29d0ef969273576792abfe0c76cc14df51d97e6b Mon Sep 17 00:00:00 2001 From: Oliver Wolff Date: Thu, 15 Nov 2018 12:59:58 +0100 Subject: winrt: Document necessity of pairing devices before discovery Prebuilt packages do not use the newer BTLE backend so by default BT devices have to be paired before they can be found on Windows. Change-Id: I128b319b95c49ec8eab4a221927712bae5253327 Reviewed-by: Alex Blasche --- src/bluetooth/qbluetoothdevicediscoveryagent.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/bluetooth/qbluetoothdevicediscoveryagent.cpp b/src/bluetooth/qbluetoothdevicediscoveryagent.cpp index c9c3fa39..8a5772c4 100644 --- a/src/bluetooth/qbluetoothdevicediscoveryagent.cpp +++ b/src/bluetooth/qbluetoothdevicediscoveryagent.cpp @@ -75,6 +75,9 @@ Q_DECLARE_LOGGING_CATEGORY(QT_BT) the discovery process will limit the search to the type which is supported. \note Since Android 6.0 the ability to detect devices requires ACCESS_COARSE_LOCATION. + + \note Due to API limitations it is only possible to find devices that have been paired using + Windows' settings on Windows. */ /*! -- cgit v1.2.3 From d55434e4e36132d0c09107f22323b02cd1dff3a9 Mon Sep 17 00:00:00 2001 From: Oliver Wolff Date: Thu, 15 Nov 2018 14:06:12 +0100 Subject: winrt: Clarify situation of ServiceClassIds and ProtocolDescriptorList Change-Id: I355f7b5d83b925af785a35ca27cc0943f346665e Reviewed-by: Alex Blasche --- src/bluetooth/qbluetoothserviceinfo.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/bluetooth/qbluetoothserviceinfo.cpp b/src/bluetooth/qbluetoothserviceinfo.cpp index 9da1cf78..74b17ac4 100644 --- a/src/bluetooth/qbluetoothserviceinfo.cpp +++ b/src/bluetooth/qbluetoothserviceinfo.cpp @@ -134,6 +134,10 @@ QT_BEGIN_NAMESPACE \value ServiceName Name of the Bluetooth service in the primary language. \value ServiceDescription Description of the Bluetooth service in the primary language. \value ServiceProvider Name of the company / entity that provides the Bluetooth service primary language. + + \note On Windows ServiceClassIds and ProtocolDescriptorList are automatically set to default + values when a service is created. Manually setting values for these attributes will not work and + might lead to unexpected results on this platform. */ /*! -- cgit v1.2.3 From f61b2803146aba90ec0084c12ef1a356eb5f062f Mon Sep 17 00:00:00 2001 From: Oliver Wolff Date: Wed, 15 Aug 2018 12:17:53 +0200 Subject: winrt: Small code cleanup Remove unnecessary break and correct one of bufferFromAttribute's return values. Change-Id: I6d4d74318f2eee1ed89f2e2f95909978fd8b4733 Reviewed-by: Alex Blasche --- src/bluetooth/qbluetoothserviceinfo_winrt.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/bluetooth/qbluetoothserviceinfo_winrt.cpp b/src/bluetooth/qbluetoothserviceinfo_winrt.cpp index 04b1872b..45262735 100644 --- a/src/bluetooth/qbluetoothserviceinfo_winrt.cpp +++ b/src/bluetooth/qbluetoothserviceinfo_winrt.cpp @@ -324,7 +324,6 @@ static ComPtr bufferFromAttribute(const QVariant &attribute) case 0: qCWarning(QT_BT_WINRT) << "Don't know how to register Uuid of length 0"; return nullptr; - break; case 2: qCDebug(QT_BT_WINRT) << Q_FUNC_INFO << "Registering Uuid attribute with length 2:" << uuid; hr = writer->WriteByte(TYPE_UUID16); @@ -402,7 +401,7 @@ static ComPtr bufferFromAttribute(const QVariant &attribute) qCDebug(QT_BT_WINRT) << Q_FUNC_INFO << "Registered sequence attribute with length" << length; } else if (attribute.userType() == qMetaTypeId()) { qCWarning(QT_BT_WINRT) << "Don't know how to register user type Alternative"; - return false; + return nullptr; } break; default: -- cgit v1.2.3