From 8a6d9c307851f3492ddc597f5f03e80f236a7857 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Mon, 15 Jul 2019 12:57:40 +0200 Subject: Fix compilation with C++20 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Implicit capture of 'this' in [=] is deprecated in C++20. Fix by using explicit capture. Change-Id: I96132d83d87ae61986ba1b1ea3f9cf8e50059f1f Reviewed-by: Mårten Nordheim --- src/bluetooth/qlowenergycontroller_bluezdbus.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/bluetooth/qlowenergycontroller_bluezdbus.cpp b/src/bluetooth/qlowenergycontroller_bluezdbus.cpp index f019d9c2..26ceefb0 100644 --- a/src/bluetooth/qlowenergycontroller_bluezdbus.cpp +++ b/src/bluetooth/qlowenergycontroller_bluezdbus.cpp @@ -336,7 +336,7 @@ void QLowEnergyControllerPrivateBluezDBus::connectToDevice() QDBusPendingReply<> reply = device->Connect(); QDBusPendingCallWatcher* watcher = new QDBusPendingCallWatcher(reply, this); connect(watcher, &QDBusPendingCallWatcher::finished, this, - [=](QDBusPendingCallWatcher* call) { + [this](QDBusPendingCallWatcher* call) { QDBusPendingReply<> reply = *call; if (reply.isError()) { qCDebug(QT_BT_BLUEZ) << "BTLE_DBUS::connect() failed" @@ -358,7 +358,7 @@ void QLowEnergyControllerPrivateBluezDBus::disconnectFromDevice() QDBusPendingReply<> reply = device->Disconnect(); QDBusPendingCallWatcher* watcher = new QDBusPendingCallWatcher(reply, this); connect(watcher, &QDBusPendingCallWatcher::finished, this, - [=](QDBusPendingCallWatcher* call) { + [this](QDBusPendingCallWatcher* call) { QDBusPendingReply<> reply = *call; if (reply.isError()) { qCDebug(QT_BT_BLUEZ) << "BTLE_DBUS::disconnect() failed" -- cgit v1.2.3 From 4ac755bb6e51891881b7477702be8ca917b60c8a Mon Sep 17 00:00:00 2001 From: Oliver Wolff Date: Tue, 16 Jul 2019 13:03:01 +0200 Subject: winrt: Do not try to delete nullptr worker When calling QBluetoothDeviceDiscoveryAgentPrivate::stop the worker pointer is cleared in disconnectAndClearWorker so there is no need to call deleteLater (which will just result in a warning). Change-Id: I2713474833b61a12018ecfa6f9eb11618ed025a7 Task-number: QTBUG-75089 Reviewed-by: Timur Pocheptsov Reviewed-by: Alex Blasche --- src/bluetooth/qbluetoothdevicediscoveryagent_winrt.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/bluetooth/qbluetoothdevicediscoveryagent_winrt.cpp b/src/bluetooth/qbluetoothdevicediscoveryagent_winrt.cpp index ef2a69b1..b2554558 100644 --- a/src/bluetooth/qbluetoothdevicediscoveryagent_winrt.cpp +++ b/src/bluetooth/qbluetoothdevicediscoveryagent_winrt.cpp @@ -606,10 +606,8 @@ void QBluetoothDeviceDiscoveryAgentPrivate::stop() disconnectAndClearWorker(); emit q->canceled(); } - if (leScanTimer) { + if (leScanTimer) leScanTimer->stop(); - worker->deleteLater(); - } } void QBluetoothDeviceDiscoveryAgentPrivate::registerDevice(const QBluetoothDeviceInfo &info) -- cgit v1.2.3 From 263fc5186325a7dd59a7533b98b3bf1296ea0d16 Mon Sep 17 00:00:00 2001 From: Alex Blasche Date: Tue, 16 Jul 2019 11:17:28 +0200 Subject: Do not handle PAIRING_VARIANT_PIN The user has to enter a pin in such cases. Since QBluetoothLocalDevice does not have an API to return a pin it makes no sense for QtBluetooth to handle this type of request. Android will provide its own fall back form. This patch is mostly a revert of f8c0572ddcd. Fixes: QTBUG-76565 Task-number: QTBUG-70295 Change-Id: I61062ac84ce508f3b82c7359a60d5c9c5bba86a4 Reviewed-by: Timur Pocheptsov Reviewed-by: Oliver Wolff --- src/bluetooth/android/localdevicebroadcastreceiver.cpp | 12 +++++++++++- src/bluetooth/qbluetoothlocaldevice_android.cpp | 11 ----------- src/bluetooth/qbluetoothlocaldevice_p.h | 1 - 3 files changed, 11 insertions(+), 13 deletions(-) diff --git a/src/bluetooth/android/localdevicebroadcastreceiver.cpp b/src/bluetooth/android/localdevicebroadcastreceiver.cpp index e3b01987..78aecc12 100644 --- a/src/bluetooth/android/localdevicebroadcastreceiver.cpp +++ b/src/bluetooth/android/localdevicebroadcastreceiver.cpp @@ -189,6 +189,14 @@ void LocalDeviceBroadcastReceiver::onReceive(JNIEnv *env, jobject context, jobje return; case 0: //BluetoothDevice.PAIRING_VARIANT_PIN { + qCDebug(QT_BT_ANDROID) << "Pairing : PAIRING_VARIANT_PIN -> use Android default handling"; + + // The section below is disabled because this Android pairing variant + // requires the user to enter a pin. Since QBluetoothLocalDevice does + // not have a setPin() equivalent which might be used to return the user's value. + // For now we ignore this request. If an app ignores such requests, + // Android shows a "fall-back" pin code entry form. + /* //generate a random key const QString pin = QStringLiteral("%1").arg(QRandomGenerator::global()->bounded(1000000), 6, 10, QLatin1Char('0')); @@ -225,10 +233,12 @@ void LocalDeviceBroadcastReceiver::onReceive(JNIEnv *env, jobject context, jobje } const QBluetoothAddress address(bluetoothDevice.callObjectMethod("getAddress").toString()); - emit pairingDisplayPinCode(address, pin); + emit pairingDisplayPinCode(address, pin);*/ + break; } case 2: //BluetoothDevice.PAIRING_VARIANT_PASSKEY_CONFIRMATION { + qCDebug(QT_BT_ANDROID) << "Pairing : PAIRING_VARIANT_PASSKEY_CONFIRMATION"; keyExtra = valueForStaticField(JavaNames::BluetoothDevice, JavaNames::ExtraPairingKey); key = intentObject.callMethod("getIntExtra", diff --git a/src/bluetooth/qbluetoothlocaldevice_android.cpp b/src/bluetooth/qbluetoothlocaldevice_android.cpp index 40e4c2d4..2995d368 100644 --- a/src/bluetooth/qbluetoothlocaldevice_android.cpp +++ b/src/bluetooth/qbluetoothlocaldevice_android.cpp @@ -69,8 +69,6 @@ QBluetoothLocalDevicePrivate::QBluetoothLocalDevicePrivate( this, &QBluetoothLocalDevicePrivate::processConnectDeviceChanges); connect(receiver, &LocalDeviceBroadcastReceiver::pairingDisplayConfirmation, this, &QBluetoothLocalDevicePrivate::processDisplayConfirmation); - connect(receiver, &LocalDeviceBroadcastReceiver::pairingDisplayPinCode, - this, &QBluetoothLocalDevicePrivate::processDisplayPinCode); } QBluetoothLocalDevicePrivate::~QBluetoothLocalDevicePrivate() @@ -206,15 +204,6 @@ void QBluetoothLocalDevicePrivate::processDisplayConfirmation(const QBluetoothAd return; emit q_ptr->pairingDisplayConfirmation(address, pin); -} - -void QBluetoothLocalDevicePrivate::processDisplayPinCode(const QBluetoothAddress &address, const QString &pin) -{ - // only send pairing notification for pairing requests issued by - // this QBluetoothLocalDevice instance - if (pendingPairing(address) == -1) - return; - emit q_ptr->pairingDisplayPinCode(address, pin); } diff --git a/src/bluetooth/qbluetoothlocaldevice_p.h b/src/bluetooth/qbluetoothlocaldevice_p.h index 98c62151..1f99f27e 100644 --- a/src/bluetooth/qbluetoothlocaldevice_p.h +++ b/src/bluetooth/qbluetoothlocaldevice_p.h @@ -113,7 +113,6 @@ private slots: QBluetoothLocalDevice::Pairing pairing); void processConnectDeviceChanges(const QBluetoothAddress &address, bool isConnectEvent); void processDisplayConfirmation(const QBluetoothAddress &address, const QString &pin); - void processDisplayPinCode(const QBluetoothAddress &address, const QString &pin); private: QBluetoothLocalDevice *q_ptr; -- cgit v1.2.3 From 8110fdd4c6d80d05934768fa808a4cb187212fe0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Klitzing?= Date: Fri, 19 Jul 2019 11:06:59 +0200 Subject: Core/IO/Bluetooth - fix ambiguous conversions for macOS This is a sibling of QTBUG-76847 on macOS instead of iOS. Change-Id: I3df6e28d65b9835f5f54e92d462d23423c48d835 Reviewed-by: Timur Pocheptsov --- .../qbluetoothdevicediscoveryagent_osx.mm | 6 ++--- src/bluetooth/qbluetoothlocaldevice_osx.mm | 2 +- src/bluetooth/qbluetoothserver_osx.mm | 6 ++--- src/bluetooth/qbluetoothserviceinfo_osx.mm | 2 +- src/bluetooth/qbluetoothsocket_osx.mm | 26 +++++++++++----------- src/bluetooth/qbluetoothtransferreply_osx.mm | 10 ++++----- 6 files changed, 26 insertions(+), 26 deletions(-) diff --git a/src/bluetooth/qbluetoothdevicediscoveryagent_osx.mm b/src/bluetooth/qbluetoothdevicediscoveryagent_osx.mm index 4657da82..bdc3c85e 100644 --- a/src/bluetooth/qbluetoothdevicediscoveryagent_osx.mm +++ b/src/bluetooth/qbluetoothdevicediscoveryagent_osx.mm @@ -181,7 +181,7 @@ QBluetoothDeviceDiscoveryAgentPrivate::QBluetoothDeviceDiscoveryAgentPrivate(con QBluetoothDeviceDiscoveryAgentPrivate::~QBluetoothDeviceDiscoveryAgentPrivate() { - if (inquiryLE && agentState != NonActive) { + if (inquiryLE.data() && agentState != NonActive) { // We want the LE scan to stop as soon as possible. if (dispatch_queue_t leQueue = OSXBluetooth::qt_LE_queue()) { // Local variable to be retained ... @@ -195,7 +195,7 @@ QBluetoothDeviceDiscoveryAgentPrivate::~QBluetoothDeviceDiscoveryAgentPrivate() bool QBluetoothDeviceDiscoveryAgentPrivate::isValid() const { - return hostController && [hostController powerState] == kBluetoothHCIPowerStateON; + return hostController.data() && [hostController powerState] == kBluetoothHCIPowerStateON; } bool QBluetoothDeviceDiscoveryAgentPrivate::isActive() const @@ -292,7 +292,7 @@ void QBluetoothDeviceDiscoveryAgentPrivate::startLE() // Check queue and create scanner: inquiryLE.reset([[LEDeviceInquiryObjC alloc] initWithNotifier:notifier.data()]); - if (inquiryLE) + if (inquiryLE.data()) notifier.take(); // Whatever happens next, inquiryLE is already the owner ... dispatch_queue_t leQueue(qt_LE_queue()); diff --git a/src/bluetooth/qbluetoothlocaldevice_osx.mm b/src/bluetooth/qbluetoothlocaldevice_osx.mm index 52b7bba8..e7dd9906 100644 --- a/src/bluetooth/qbluetoothlocaldevice_osx.mm +++ b/src/bluetooth/qbluetoothlocaldevice_osx.mm @@ -149,7 +149,7 @@ QBluetoothLocalDevicePrivate::QBluetoothLocalDevicePrivate(QBluetoothLocalDevice bool QBluetoothLocalDevicePrivate::isValid() const { - return hostController; + return hostController.data(); } void QBluetoothLocalDevicePrivate::requestPairing(const QBluetoothAddress &address, Pairing pairing) diff --git a/src/bluetooth/qbluetoothserver_osx.mm b/src/bluetooth/qbluetoothserver_osx.mm index eefaf4da..5d3b8fc4 100644 --- a/src/bluetooth/qbluetoothserver_osx.mm +++ b/src/bluetooth/qbluetoothserver_osx.mm @@ -142,7 +142,7 @@ void QBluetoothServerPrivate::stopListener() void QBluetoothServerPrivate::openNotify(IOBluetoothRFCOMMChannel *channel) { - Q_ASSERT_X(listener, Q_FUNC_INFO, "invalid listener (nil)"); + Q_ASSERT_X(listener.data(), Q_FUNC_INFO, "invalid listener (nil)"); Q_ASSERT_X(channel, Q_FUNC_INFO, "invalid channel (nil)"); Q_ASSERT_X(q_ptr, Q_FUNC_INFO, "invalid q_ptr (null)"); @@ -154,7 +154,7 @@ void QBluetoothServerPrivate::openNotify(IOBluetoothRFCOMMChannel *channel) void QBluetoothServerPrivate::openNotify(IOBluetoothL2CAPChannel *channel) { - Q_ASSERT_X(listener, Q_FUNC_INFO, "invalid listener (nil)"); + Q_ASSERT_X(listener.data(), Q_FUNC_INFO, "invalid listener (nil)"); Q_ASSERT_X(channel, Q_FUNC_INFO, "invalid channel (nil)"); Q_ASSERT_X(q_ptr, Q_FUNC_INFO, "invalid q_ptr (null)"); @@ -293,7 +293,7 @@ bool QBluetoothServer::listen(const QBluetoothAddress &address, quint16 port) OSXBluetooth::qt_test_iobluetooth_runloop(); - if (d_ptr->listener) { + if (d_ptr->listener.data()) { qCWarning(QT_BT_OSX) << "already in listen mode, close server first"; return false; } diff --git a/src/bluetooth/qbluetoothserviceinfo_osx.mm b/src/bluetooth/qbluetoothserviceinfo_osx.mm index 34de4695..7ce4c645 100644 --- a/src/bluetooth/qbluetoothserviceinfo_osx.mm +++ b/src/bluetooth/qbluetoothserviceinfo_osx.mm @@ -152,7 +152,7 @@ bool QBluetoothServiceInfoPrivate::unregisterService() if (!registered) return false; - Q_ASSERT_X(serviceRecord, Q_FUNC_INFO, "service registered, but serviceRecord is nil"); + Q_ASSERT_X(serviceRecord.data(), Q_FUNC_INFO, "service registered, but serviceRecord is nil"); [serviceRecord removeServiceRecord]; serviceRecord.reset(nil); diff --git a/src/bluetooth/qbluetoothsocket_osx.mm b/src/bluetooth/qbluetoothsocket_osx.mm index 7f630146..2a856092 100644 --- a/src/bluetooth/qbluetoothsocket_osx.mm +++ b/src/bluetooth/qbluetoothsocket_osx.mm @@ -101,13 +101,13 @@ void QBluetoothSocketPrivate::connectToService(const QBluetoothAddress &address, if (socketType == QBluetoothServiceInfo::RfcommProtocol) { rfcommChannel.reset([[ObjCRFCOMMChannel alloc] initWithDelegate:this]); - if (rfcommChannel) + if (rfcommChannel.data()) status = [rfcommChannel connectAsyncToDevice:address withChannelID:port]; else status = kIOReturnNoMemory; } else if (socketType == QBluetoothServiceInfo::L2capProtocol) { l2capChannel.reset([[ObjCL2CAPChannel alloc] initWithDelegate:this]); - if (l2capChannel) + if (l2capChannel.data()) status = [l2capChannel connectAsyncToDevice:address withPSM:port]; else status = kIOReturnNoMemory; @@ -181,10 +181,10 @@ QString QBluetoothSocketPrivate::peerName() const NSString *nsName = nil; if (socketType == QBluetoothServiceInfo::RfcommProtocol) { - if (rfcommChannel) + if (rfcommChannel.data()) nsName = [rfcommChannel peerName]; } else if (socketType == QBluetoothServiceInfo::L2capProtocol) { - if (l2capChannel) + if (l2capChannel.data()) nsName = [l2capChannel peerName]; } @@ -198,10 +198,10 @@ QBluetoothAddress QBluetoothSocketPrivate::peerAddress() const { BluetoothDeviceAddress addr = {}; if (socketType == QBluetoothServiceInfo::RfcommProtocol) { - if (rfcommChannel) + if (rfcommChannel.data()) addr = [rfcommChannel peerAddress]; } else if (socketType == QBluetoothServiceInfo::L2capProtocol) { - if (l2capChannel) + if (l2capChannel.data()) addr = [l2capChannel peerAddress]; } @@ -211,10 +211,10 @@ QBluetoothAddress QBluetoothSocketPrivate::peerAddress() const quint16 QBluetoothSocketPrivate::peerPort() const { if (socketType == QBluetoothServiceInfo::RfcommProtocol) { - if (rfcommChannel) + if (rfcommChannel.data()) return [rfcommChannel getChannelID]; } else if (socketType == QBluetoothServiceInfo::L2capProtocol) { - if (l2capChannel) + if (l2capChannel.data()) return [l2capChannel getPSM]; } @@ -231,7 +231,7 @@ void QBluetoothSocketPrivate::_q_writeNotify() Q_ASSERT_X(socketType == QBluetoothServiceInfo::L2capProtocol || socketType == QBluetoothServiceInfo::RfcommProtocol, Q_FUNC_INFO, "invalid socket type"); - Q_ASSERT_X(l2capChannel || rfcommChannel, Q_FUNC_INFO, + Q_ASSERT_X(l2capChannel.data() || rfcommChannel.data(), Q_FUNC_INFO, "invalid socket (no open channel)"); Q_ASSERT_X(q_ptr, Q_FUNC_INFO, "invalid q_ptr (null)"); @@ -275,13 +275,13 @@ bool QBluetoothSocketPrivate::setChannel(IOBluetoothRFCOMMChannel *channel) openMode = QIODevice::ReadWrite; rfcommChannel.reset([[ObjCRFCOMMChannel alloc] initWithDelegate:this channel:channel]); - if (rfcommChannel) {// We do not handle errors, up to an external user. + if (rfcommChannel.data()) {// We do not handle errors, up to an external user. q_ptr->setOpenMode(QIODevice::ReadWrite); state = QBluetoothSocket::ConnectedState; socketType = QBluetoothServiceInfo::RfcommProtocol; } - return rfcommChannel; + return rfcommChannel.data(); } bool QBluetoothSocketPrivate::setChannel(IOBluetoothL2CAPChannel *channel) @@ -299,13 +299,13 @@ bool QBluetoothSocketPrivate::setChannel(IOBluetoothL2CAPChannel *channel) openMode = QIODevice::ReadWrite; l2capChannel.reset([[ObjCL2CAPChannel alloc] initWithDelegate:this channel:channel]); - if (l2capChannel) {// We do not handle errors, up to an external user. + if (l2capChannel.data()) {// We do not handle errors, up to an external user. q_ptr->setOpenMode(QIODevice::ReadWrite); state = QBluetoothSocket::ConnectedState; socketType = QBluetoothServiceInfo::L2capProtocol; } - return l2capChannel; + return l2capChannel.data(); } diff --git a/src/bluetooth/qbluetoothtransferreply_osx.mm b/src/bluetooth/qbluetoothtransferreply_osx.mm index 65c8f82d..40a747f8 100644 --- a/src/bluetooth/qbluetoothtransferreply_osx.mm +++ b/src/bluetooth/qbluetoothtransferreply_osx.mm @@ -136,13 +136,13 @@ QBluetoothTransferReplyOSXPrivate::~QBluetoothTransferReplyOSXPrivate() // The OBEX session will be closed then. If // somehow IOBluetooth/OBEX still has a reference to our // session, it will not call any of delegate's callbacks. - if (session) + if (session.data()) [session closeSession]; } bool QBluetoothTransferReplyOSXPrivate::isActive() const { - return agent || (session && [session hasActiveRequest]); + return agent.data() || (session.data() && [session hasActiveRequest]); } bool QBluetoothTransferReplyOSXPrivate::startOPP(const QBluetoothAddress &device) @@ -218,7 +218,7 @@ void QBluetoothTransferReplyOSXPrivate::sendConnect(const QBluetoothAddress &dev void QBluetoothTransferReplyOSXPrivate::sendPut() { Q_ASSERT_X(inputStream, Q_FUNC_INFO, "invalid input stream (null)"); - Q_ASSERT_X(session, Q_FUNC_INFO, "invalid OBEX session (nil)"); + Q_ASSERT_X(session.data(), Q_FUNC_INFO, "invalid OBEX session (nil)"); Q_ASSERT_X([session isConnected], Q_FUNC_INFO, "not connected"); Q_ASSERT_X(![session hasActiveRequest], Q_FUNC_INFO, "session already has an active request"); @@ -268,7 +268,7 @@ void QBluetoothTransferReplyOSXPrivate::OBEXConnectError(OBEXError errorCode, OB Q_UNUSED(errorCode) Q_UNUSED(response) - if (session) { + if (session.data()) { setReplyError(QBluetoothTransferReply::SessionError, QCoreApplication::translate(TRANSFER_REPLY, TR_CONNECT_FAILED)); } else { @@ -283,7 +283,7 @@ void QBluetoothTransferReplyOSXPrivate::OBEXConnectError(OBEXError errorCode, OB void QBluetoothTransferReplyOSXPrivate::OBEXConnectSuccess() { // Now that OBEX connect succeeded, we can send an OBEX put request. - if (!session) { + if (!session.data()) { // We're still in OBEXConnect(), it'll take care of next steps. return; } -- cgit v1.2.3 From c9d585da2ddd49108d7b56f480bcfc9d71b67dbf Mon Sep 17 00:00:00 2001 From: Oliver Wolff Date: Tue, 7 May 2019 15:09:00 +0200 Subject: winrt: Add limitations to bluetooth overview page Same as on Android, Obex is not supported on winrt. Even though QBluetoothServiceInfo has a small passage about winrt's limitations when it comes to RFCOMM. Users might miss these limitations as they are quite hidden. Make them more visible by also having them in the overview. Task-number: QTBUG-62520 Change-Id: Ibdf1a9b334b7138301e833981e67c7813488bbd1 Reviewed-by: Alex Blasche --- src/bluetooth/doc/src/bluetooth-overview.qdoc | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/bluetooth/doc/src/bluetooth-overview.qdoc b/src/bluetooth/doc/src/bluetooth-overview.qdoc index 8138e937..e27dc0ed 100644 --- a/src/bluetooth/doc/src/bluetooth-overview.qdoc +++ b/src/bluetooth/doc/src/bluetooth-overview.qdoc @@ -47,7 +47,12 @@ \li Receive advertisement from Bluetooth Low Energy device. \endlist - Note that the Object Push Profile is not supported on Android. + Note that the Object Push Profile is not supported on Android and Windows. + + Note that parts of RFCOMM functionality cannot be configured by Qt on Windows. + A service's \l {ServiceClassIds} and \l {ProtocolDescriptorList} are filled automatically by + Windows. Therefore registering a service with custom values for these fields might not yield the + expected result on Windows. The following sections describe how to use the Qt Bluetooth C++ API classes for the above use cases. -- cgit v1.2.3 From 37cd27fac015d8d3b823321a2e2f04826ea844b4 Mon Sep 17 00:00:00 2001 From: Antti Kokko Date: Tue, 30 Jul 2019 11:25:42 +0300 Subject: Add changes file for Qt 5.13.1 + 672ebe7690455c6ee13f96ad05d030183a7e57f8 qbluetoothsocket_winrt: Use recommended service connection approach if possible + b5ec1e15f360cd60386488588dd4796169082355 winrt: Make sure that ProtocolDescriptorList is always set for services + 576164fef388f312dcc7f59721de8237dfcd15b3 Create qbluetoothlocaldevice_winrt + 23386ed8dab0a8b8280c2e1b935171adcce0d833 winrt: Add QBluetoothLocalDevice::pairingStatus + 5aa37aab69d89691ab7eded7f708915612f1afa3 qlowenergycontroller_winrt_new: Add registerStatusChanges and onStatusChange functions + 68cb332228df1c8730e721061134c18bda37cf02 qlowenergycontroller_winrt_new: Avoid late callbacks that lead to crashes + 1d4cb8a6782b74a379098da58f383aaaf61989bd winrt: Try "connectToDevice" indefinitely + 80c84c4df0cb8dc5389542dde34317102f7b25b8 qlowenergycontroller_winrt_new_p.h: Use forward declarations instead of includes when possible + 14b0efe1d4e5addec5f577a2d01a3a0d9a1d931b Bluetooth: Compare the server channel when checking for duplicates + d67ca376b2111717de88596888f315fba05ef9c3 BlueZ: Fix leaking client socket when running QLEController Peripheral mode + c6c3241a4713b3ea89837341214625514951f712 Bump version + f6be1f73a810514335ab3d27e1d05825a36b06af Add changes file for Qt 5.12.4 + 0a49c93037e5f819f60486af318b6708e3b2b4aa qbluetoothsocket_winrt: Fix clang warnings + d755f7ab67a1f5b345caf09b1fc798d3c6e0ca34 winrt: Avoid threading issues when handling characteristic changes + e511f35a90608a4fb144b2c3dac37986d81cb41c winrt: Add service thread logging + 7a73ef639d461200213bdcd7f447ed99a14d0a4a Bump version + 3394807b3b0a234452b76e6295cb2362dc2c0cc0 Bump version + 76260fce994e9bac50c62b1c777e56d80848c0df Binary compatibility files for Qt5.13.0 for QtConnectivity + 0fc7e18bf7a24c9408602242d51a852905dfd0da Core/IO/Bluetooth - fix ambiguous conversions + 4d6a1030fd172641caacbc75b9e73cbc5b8da825 Doc: Replace example file lists with links to code.qt.io + 8a6d9c307851f3492ddc597f5f03e80f236a7857 Fix compilation with C++20 + 4ac755bb6e51891881b7477702be8ca917b60c8a winrt: Do not try to delete nullptr worker + 263fc5186325a7dd59a7533b98b3bf1296ea0d16 Do not handle PAIRING_VARIANT_PIN + 8110fdd4c6d80d05934768fa808a4cb187212fe0 Core/IO/Bluetooth - fix ambiguous conversions for macOS + c9d585da2ddd49108d7b56f480bcfc9d71b67dbf winrt: Add limitations to bluetooth overview page Change-Id: I020f7905e581877e2264b04032fb7db6237e44cb Reviewed-by: Oliver Wolff --- dist/changes-5.13.1 | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 dist/changes-5.13.1 diff --git a/dist/changes-5.13.1 b/dist/changes-5.13.1 new file mode 100644 index 00000000..706bd31d --- /dev/null +++ b/dist/changes-5.13.1 @@ -0,0 +1,36 @@ +Qt 5.13.1 is a bug-fix release. It maintains both forward and backward +compatibility (source and binary) with Qt 5.13.0. + +For more details, refer to the online documentation included in this +distribution. The documentation is also available online: + +https://doc.qt.io/qt-5/index.html + +The Qt version 5.13 series is binary compatible with the 5.12.x series. +Applications compiled for 5.12 will continue to run with 5.13. + +Some of the changes listed in this file include issue tracking numbers +corresponding to tasks in the Qt Bug Tracker: + +https://bugreports.qt.io/ + +Each of these identifiers can be entered in the bug tracker to obtain more +information about a particular change. + +**************************************************************************** +* Qt 5.13.1 Changes * +**************************************************************************** + +QtBluetooth +----------- + + - [QTBUG-62520] Improved stability of QBluetoothSocket::connectToService() + on WinRT. + + - [QTBUG-62294] Added implementation for QBluetoothLocalSocket on WinRT. Note + that the platform only supports pairingStatus() related features. + + - Improved stability of QLowEnergyController on WinRT. + + - [QTBUG-75907] Reduced number of asserts in QLowEnergyController on WinRT. + -- cgit v1.2.3 From 406b18fdb3704a9e9e66cefbc74e7cff55f1947c Mon Sep 17 00:00:00 2001 From: Alex Blasche Date: Tue, 6 Aug 2019 09:28:46 +0200 Subject: Fix QLEAdvertisingData::setManufacturerData on Android The manufacturer data was not properly set because the related Java function requires a byte[] as second parameter. The equivelent JNI type is [B and not [B]. This caused a crash of the application. Change-Id: Iaa062ed9eb01e03d155583519d3f6a6bc01d72f7 Reviewed-by: Timur Pocheptsov --- src/bluetooth/qlowenergycontroller_android.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bluetooth/qlowenergycontroller_android.cpp b/src/bluetooth/qlowenergycontroller_android.cpp index 35d943fc..86e6ade7 100644 --- a/src/bluetooth/qlowenergycontroller_android.cpp +++ b/src/bluetooth/qlowenergycontroller_android.cpp @@ -940,7 +940,7 @@ static QAndroidJniObject createJavaAdvertiseData(const QLowEnergyAdvertisingData env->SetByteArrayRegion(nativeData, 0, nativeSize, reinterpret_cast(data.manufacturerData().constData())); builder = builder.callObjectMethod("addManufacturerData", - "(I[B])Landroid/bluetooth/le/AdvertiseData$Builder;", + "(I[B)Landroid/bluetooth/le/AdvertiseData$Builder;", data.manufacturerId(), nativeData); env->DeleteLocalRef(nativeData); -- cgit v1.2.3 From 0a5bf7a41e5c2c4a36efeace83444ceaee79c945 Mon Sep 17 00:00:00 2001 From: Alex Blasche Date: Tue, 20 Aug 2019 13:16:25 +0300 Subject: Add changes file for Qt 5.12.5 and fix 5.12.4 change file + 3394807b3b0a234452b76e6295cb2362dc2c0cc0 Bump version + 0fc7e18bf7a24c9408602242d51a852905dfd0da Core/IO/Bluetooth - fix ambiguous conversions + 8a6d9c307851f3492ddc597f5f03e80f236a7857 Fix compilation with C++20 + 4ac755bb6e51891881b7477702be8ca917b60c8a winrt: Do not try to delete nullptr worker + 263fc5186325a7dd59a7533b98b3bf1296ea0d16 Do not handle PAIRING_VARIANT_PIN + 8110fdd4c6d80d05934768fa808a4cb187212fe0 Core/IO/Bluetooth - fix ambiguous conversions for macOS + c9d585da2ddd49108d7b56f480bcfc9d71b67dbf winrt: Add limitations to bluetooth overview page + 406b18fdb3704a9e9e66cefbc74e7cff55f1947c Fix QLEAdvertisingData::setManufacturerData on Android Change-Id: Ib8bf9529e85e8f8c2f76c203120afb3d9ceca492 Reviewed-by: Oliver Wolff --- dist/changes-5.12.4 | 2 +- dist/changes-5.12.5 | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 dist/changes-5.12.5 diff --git a/dist/changes-5.12.4 b/dist/changes-5.12.4 index cb7ef2bf..d751f704 100644 --- a/dist/changes-5.12.4 +++ b/dist/changes-5.12.4 @@ -18,7 +18,7 @@ Each of these identifiers can be entered in the bug tracker to obtain more information about a particular change. **************************************************************************** -* Qt 5.12.3 Changes * +* Qt 5.12.4 Changes * **************************************************************************** QtBluetooth diff --git a/dist/changes-5.12.5 b/dist/changes-5.12.5 new file mode 100644 index 00000000..9f0b41b1 --- /dev/null +++ b/dist/changes-5.12.5 @@ -0,0 +1,38 @@ +Qt 5.12.5 is a bug-fix release. It maintains both forward and backward +compatibility (source and binary) with Qt 5.12.0 through 5.12.4. + +For more details, refer to the online documentation included in this +distribution. The documentation is also available online: + +https://doc.qt.io/qt-5/index.html + +The Qt version 5.12 series is binary compatible with the 5.11.x series. +Applications compiled for 5.11 will continue to run with 5.12. + +Some of the changes listed in this file include issue tracking numbers +corresponding to tasks in the Qt Bug Tracker: + +https://bugreports.qt.io/ + +Each of these identifiers can be entered in the bug tracker to obtain more +information about a particular change. + +**************************************************************************** +* Qt 5.12.5 Changes * +**************************************************************************** + +QtBluetooth +----------- + + - [QTBUG-76847] Fixed ambiguous type conversions on Apple platforms. + + - [QTBUG-75089] Removed attempt to delete nullptr on WinRT when calling + QBluetoothDeviceDiscoveryAgent::stop(). + + - [QTBUG-76565] Reverted handling of PAIRING_VARIANT_PIN by + QBluetoothLocalDevice on Android. + + - [QTBUG-62520] Improved documentation covering platform limitations on WinRT. + + - Fixed QLowEnergyAdvertisingData::setManufacturerData() on Android. Previously a wrong + JNI signature prevented setting the data. -- cgit v1.2.3 From dd4593c61e4b77c4e3b1ee516a1e8825ebb0197b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A5rten=20Nordheim?= Date: Thu, 5 Sep 2019 14:03:52 +0200 Subject: Fix build errors with clang-cl on Windows MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The following errors are fixed: error: member access into incomplete type 'ABI::Windows::Devices::Bluetooth::IBluetoothDeviceStatics' error: unknown type name 'QMutex'; did you mean 'Mutex'? Task-number: QTQAINFRA-2139 Change-Id: I5e5d9c0776cd9feb5d682c5a0e1be2f5173101f9 Reviewed-by: Tony Sarajärvi --- src/bluetooth/qbluetoothdevicediscoveryagent_winrt.cpp | 1 + src/bluetooth/qbluetoothlocaldevice_p.h | 1 + src/bluetooth/qbluetoothlocaldevice_winrt.cpp | 2 ++ 3 files changed, 4 insertions(+) diff --git a/src/bluetooth/qbluetoothdevicediscoveryagent_winrt.cpp b/src/bluetooth/qbluetoothdevicediscoveryagent_winrt.cpp index 940aa599..ae8e9184 100644 --- a/src/bluetooth/qbluetoothdevicediscoveryagent_winrt.cpp +++ b/src/bluetooth/qbluetoothdevicediscoveryagent_winrt.cpp @@ -51,6 +51,7 @@ #include #include #include +#include #include #include diff --git a/src/bluetooth/qbluetoothlocaldevice_p.h b/src/bluetooth/qbluetoothlocaldevice_p.h index 75e75aee..b2f03b9f 100644 --- a/src/bluetooth/qbluetoothlocaldevice_p.h +++ b/src/bluetooth/qbluetoothlocaldevice_p.h @@ -229,6 +229,7 @@ class QBluetoothLocalDevicePrivate : public QObject public: QBluetoothLocalDevicePrivate(QBluetoothLocalDevice *q, QBluetoothAddress = QBluetoothAddress()); + ~QBluetoothLocalDevicePrivate(); bool isValid() const; diff --git a/src/bluetooth/qbluetoothlocaldevice_winrt.cpp b/src/bluetooth/qbluetoothlocaldevice_winrt.cpp index ae794db0..6e8b1966 100644 --- a/src/bluetooth/qbluetoothlocaldevice_winrt.cpp +++ b/src/bluetooth/qbluetoothlocaldevice_winrt.cpp @@ -114,6 +114,8 @@ QBluetoothLocalDevicePrivate::QBluetoothLocalDevicePrivate(QBluetoothLocalDevice GetActivationFactory(HString::MakeReference(RuntimeClass_Windows_Devices_Bluetooth_BluetoothDevice).Get(), &mStatics); } +QBluetoothLocalDevicePrivate::~QBluetoothLocalDevicePrivate() = default; + bool QBluetoothLocalDevicePrivate::isValid() const { return (mStatics != nullptr && mLEStatics != nullptr); -- cgit v1.2.3