<feed xmlns='http://www.w3.org/2005/Atom'>
<title>qt/qtconnectivity.git, branch dev</title>
<subtitle>Qt Connectivity
</subtitle>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtconnectivity.git/'/>
<entry>
<title>Update dependencies on 'dev' in qt/qtconnectivity</title>
<updated>2026-05-08T04:28:42+00:00</updated>
<author>
<name>Qt Submodule Update Bot</name>
<email>qt_submodule_update_bot@qt-project.org</email>
</author>
<published>2026-05-08T04:28:20+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtconnectivity.git/commit/?id=df63080a3f31b2fc0e2b08c8ebc90dc0dc67b51f'/>
<id>df63080a3f31b2fc0e2b08c8ebc90dc0dc67b51f</id>
<content type='text'>
Change-Id: I8206a8051a9003a0fc4f303e8a9e384f9629f74f
Reviewed-by: Qt Submodule Update Bot &lt;qt_submodule_update_bot@qt-project.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Change-Id: I8206a8051a9003a0fc4f303e8a9e384f9629f74f
Reviewed-by: Qt Submodule Update Bot &lt;qt_submodule_update_bot@qt-project.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix crash in QNearFieldTarget::QNearFieldTarget</title>
<updated>2026-05-07T10:36:02+00:00</updated>
<author>
<name>Lars Schmertmann</name>
<email>Lars.Schmertmann@governikus.de</email>
</author>
<published>2026-05-05T12:26:52+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtconnectivity.git/commit/?id=8890f19f29d33e6f4f7179ff74bb856ba6b1643c'/>
<id>8890f19f29d33e6f4f7179ff74bb856ba6b1643c</id>
<content type='text'>
When we try to create a QNearFieldTarget for unittests we run into a crash:
 1 QAtomicOps&lt;QThreadData *&gt;::loadRelaxed&lt;QThreadData *&gt; qatomic_cxx11.h         203
 2 QBasicAtomicPointer&lt;QThreadData&gt;::loadRelaxed         qbasicatomic.h          171
 3 QObject::thread                                       qobject.cpp            1594
 4 QObject::QObject                                      qobject.cpp             935
 5 QNearFieldTargetPrivate::QNearFieldTargetPrivate      qnearfieldtarget_p.cpp   15
 6 QNearFieldTarget::QNearFieldTarget                    qnearfieldtarget.cpp    219

It is crashing because the used parent (this) is not fully
initialized when QObject try to determine the thread.

There is no need to define the parent in the constructor
parameter because the parent is set in line 399 anyways.

Pick-to: 6.11 6.8
Change-Id: Idb811b3d5df7e8adfce49116bc7378b161896669
Reviewed-by: Ivan Solovev &lt;ivan.solovev@qt.io&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When we try to create a QNearFieldTarget for unittests we run into a crash:
 1 QAtomicOps&lt;QThreadData *&gt;::loadRelaxed&lt;QThreadData *&gt; qatomic_cxx11.h         203
 2 QBasicAtomicPointer&lt;QThreadData&gt;::loadRelaxed         qbasicatomic.h          171
 3 QObject::thread                                       qobject.cpp            1594
 4 QObject::QObject                                      qobject.cpp             935
 5 QNearFieldTargetPrivate::QNearFieldTargetPrivate      qnearfieldtarget_p.cpp   15
 6 QNearFieldTarget::QNearFieldTarget                    qnearfieldtarget.cpp    219

It is crashing because the used parent (this) is not fully
initialized when QObject try to determine the thread.

There is no need to define the parent in the constructor
parameter because the parent is set in line 399 anyways.

Pick-to: 6.11 6.8
Change-Id: Idb811b3d5df7e8adfce49116bc7378b161896669
Reviewed-by: Ivan Solovev &lt;ivan.solovev@qt.io&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Clarify the support for QBluetooth::SecurityFlags on various backends</title>
<updated>2026-05-06T10:40:46+00:00</updated>
<author>
<name>Ivan Solovev</name>
<email>ivan.solovev@qt.io</email>
</author>
<published>2026-04-30T10:23:11+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtconnectivity.git/commit/?id=f88da43947774c8f6ae843ff8345152a91324a3d'/>
<id>f88da43947774c8f6ae843ff8345152a91324a3d</id>
<content type='text'>
The documentation was incomplete, because it fully ignored some of
the existing backends.

Extend the docs for both QBluetoothServer and QBluetoothSocket to
provide relevant information.

Fixes: QTBUG-146161
Pick-to: 6.11 6.8
Change-Id: Ia22fa28d46e71145902f983d0397358faaff0fba
Reviewed-by: Juha Vuolle &lt;juha.vuolle@qt.io&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The documentation was incomplete, because it fully ignored some of
the existing backends.

Extend the docs for both QBluetoothServer and QBluetoothSocket to
provide relevant information.

Fixes: QTBUG-146161
Pick-to: 6.11 6.8
Change-Id: Ia22fa28d46e71145902f983d0397358faaff0fba
Reviewed-by: Juha Vuolle &lt;juha.vuolle@qt.io&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>CMake/Android: enable Gradle for building Qt JARs</title>
<updated>2026-05-05T15:21:22+00:00</updated>
<author>
<name>Assam Boudjelthia</name>
<email>assam.boudjelthia@qt.io</email>
</author>
<published>2026-04-06T17:18:41+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtconnectivity.git/commit/?id=3a46a29bc285cf1e2313317e6a198308f068b425'/>
<id>3a46a29bc285cf1e2313317e6a198308f068b425</id>
<content type='text'>
Add Gradle project structure for JAR builds which allows
CMake to run a Gradle build and also enables such code to
be managed from IDEs easily.

The default Android platform Jar include won't be needed
because it's handled by Gradle, and the main QtAndroid.jar
include is added automatically by qt_internal_add_jar().

This also update gitignore with Gradle, JDTLS and IntelliJ
ignores. It also removes files that might have been used
exclusively for javac and some that are not needed for
neither javac nor Gradle.

Task-number: QTBUG-132915
Change-Id: I46452ba0f7e0213ea2758ebaa4e7474bffcc301c
Reviewed-by: Joerg Bornemann &lt;joerg.bornemann@qt.io&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Add Gradle project structure for JAR builds which allows
CMake to run a Gradle build and also enables such code to
be managed from IDEs easily.

The default Android platform Jar include won't be needed
because it's handled by Gradle, and the main QtAndroid.jar
include is added automatically by qt_internal_add_jar().

This also update gitignore with Gradle, JDTLS and IntelliJ
ignores. It also removes files that might have been used
exclusively for javac and some that are not needed for
neither javac nor Gradle.

Task-number: QTBUG-132915
Change-Id: I46452ba0f7e0213ea2758ebaa4e7474bffcc301c
Reviewed-by: Joerg Bornemann &lt;joerg.bornemann@qt.io&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Update dependencies on 'dev' in qt/qtconnectivity</title>
<updated>2026-05-05T13:51:29+00:00</updated>
<author>
<name>Qt Submodule Update Bot</name>
<email>qt_submodule_update_bot@qt-project.org</email>
</author>
<published>2026-05-05T13:51:07+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtconnectivity.git/commit/?id=ffdbb742d40b38fad8fe92c8cae864340c81de64'/>
<id>ffdbb742d40b38fad8fe92c8cae864340c81de64</id>
<content type='text'>
Change-Id: I6679d85a2c508cf4a778769c8e215c4b5272652f
Reviewed-by: Qt Submodule Update Bot &lt;qt_submodule_update_bot@qt-project.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Change-Id: I6679d85a2c508cf4a778769c8e215c4b5272652f
Reviewed-by: Qt Submodule Update Bot &lt;qt_submodule_update_bot@qt-project.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Disable 1-to-2-arg qHash() adapter in qtconnectivity</title>
<updated>2026-05-04T19:49:28+00:00</updated>
<author>
<name>Marc Mutz</name>
<email>marc.mutz@qt.io</email>
</author>
<published>2026-04-21T16:04:30+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtconnectivity.git/commit/?id=0c3ada616ac9437e852ce0e3c90037eb5a9d7143'/>
<id>0c3ada616ac9437e852ce0e3c90037eb5a9d7143</id>
<content type='text'>
Pick-to: 6.11
Task-number: QTBUG-145851
Change-Id: I4c981bb1c44fa6b6b93aac9de6238eab3d935973
Reviewed-by: Ivan Solovev &lt;ivan.solovev@qt.io&gt;
Reviewed-by: Mårten Nordheim &lt;marten.nordheim@qt.io&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Pick-to: 6.11
Task-number: QTBUG-145851
Change-Id: I4c981bb1c44fa6b6b93aac9de6238eab3d935973
Reviewed-by: Ivan Solovev &lt;ivan.solovev@qt.io&gt;
Reviewed-by: Mårten Nordheim &lt;marten.nordheim@qt.io&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>QBluetoothUuid: fix missing qHash() overload</title>
<updated>2026-05-04T17:20:41+00:00</updated>
<author>
<name>Marc Mutz</name>
<email>marc.mutz@qt.io</email>
</author>
<published>2026-04-21T15:49:10+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtconnectivity.git/commit/?id=5f2e7654eb52dde4a346de644a871967df871399'/>
<id>5f2e7654eb52dde4a346de644a871967df871399</id>
<content type='text'>
The class was hashable via implicit conversion to its public base
class, QUUuid.

But that involves the infamous 1-to-2-arg qHash() adapter template
that we want to get rid of (deprecated/=delete), so provide a matching
qHash() overload that calls the overload for the base class.

Because this is a public class and the implicit qHash() overload was
from a template, thus inline, we need to retain compatibility with the
way the adapter calculated the hash (call qHash() with seed = 0 and
then xor seed into the result. This is what QHashPrivate::ex1to2arg()
does, falling back to the idiomatic way of passing the seed as the
second argument of qHash() in Qt 7).

Pick-to: 6.11 6.11.1
Task-number: QTBUG-145851
Change-Id: Ic07d32d3dfb262bb3eec0c600ade97785cc94955
Reviewed-by: Ivan Solovev &lt;ivan.solovev@qt.io&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The class was hashable via implicit conversion to its public base
class, QUUuid.

But that involves the infamous 1-to-2-arg qHash() adapter template
that we want to get rid of (deprecated/=delete), so provide a matching
qHash() overload that calls the overload for the base class.

Because this is a public class and the implicit qHash() overload was
from a template, thus inline, we need to retain compatibility with the
way the adapter calculated the hash (call qHash() with seed = 0 and
then xor seed into the result. This is what QHashPrivate::ex1to2arg()
does, falling back to the idiomatic way of passing the seed as the
second argument of qHash() in Qt 7).

Pick-to: 6.11 6.11.1
Task-number: QTBUG-145851
Change-Id: Ic07d32d3dfb262bb3eec0c600ade97785cc94955
Reviewed-by: Ivan Solovev &lt;ivan.solovev@qt.io&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Windows: Catch hresult_error in LE discovery completion chain</title>
<updated>2026-05-04T14:14:01+00:00</updated>
<author>
<name>Jarkko Koivikko</name>
<email>jarkko.koivikko@code-q.fi</email>
</author>
<published>2026-04-26T07:51:22+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtconnectivity.git/commit/?id=07938829fe0b8544410de8a36363ae0c58d8b6ce'/>
<id>07938829fe0b8544410de8a36363ae0c58d8b6ce</id>
<content type='text'>
BluetoothLEDevice::FromBluetoothAddressAsync and GetGattServicesAsync
completion lambdas call chained WinRT accessors (DeviceInformation(),
Pairing(), Services(), Uuid(), ...). Each accessor runs check_hresult()
on the backing ABI call and throws winrt::hresult_error on failure.
After the Bluetooth stack has torn down state (system suspend/resume,
radio toggled, service restart), those calls routinely fail and the
exception propagates out of the lambda, crashing the process with an
access violation on the failing RaiseException.

Wrap the vulnerable calls in handleLowEnergyDevice with the shared
SAFE()/TRY() helpers from qbluetoothutils_winrt_p.h. SAFE(expr) returns
expr's value on success and a default-constructed value on a caught
hresult_error; TRY(stmt) runs stmt and returns true/false. Both log
the HRESULT.

The covered calls are device.BluetoothAddress() (TRY, so a successfully
read address of 0 -- technically not a valid BD_ADDR per the spec but
allowed by the existing code -- still proceeds, and only an actual
hresult_error causes us to bail), device.Name() (SAFE; an empty hstring
is fine for an unnamed device), device.DeviceInformation().Pairing()
.IsPaired() (SAFE), device.GetGattServicesAsync() (SAFE),
asyncOp.Completed() (TRY; registering the completion handler can also
throw, in which case the handler isn't bound and we have to decrement
the pending counter ourselves), and op.GetResults() inside the
completion lambda (SAFE, so the existing null-check covers both the
thrown and the S_OK-with-null cases with one branch).

In handleGattServices, wrap the whole Status/Services/Uuid block in
try/catch instead of SAFE-wrapping individual calls -- service.Uuid()
returns a winrt::guid that isn't cleanly default-constructible inside
SAFE, and the qScopeGuard at the top already ensures the pending
counter is decremented on any exit path.

Pick-to: 6.11 6.8
Fixes: QTBUG-145898
Change-Id: I9bd6d53773b473ee6d543e1a7e160d91ee08b4a1
Reviewed-by: Ivan Solovev &lt;ivan.solovev@qt.io&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
BluetoothLEDevice::FromBluetoothAddressAsync and GetGattServicesAsync
completion lambdas call chained WinRT accessors (DeviceInformation(),
Pairing(), Services(), Uuid(), ...). Each accessor runs check_hresult()
on the backing ABI call and throws winrt::hresult_error on failure.
After the Bluetooth stack has torn down state (system suspend/resume,
radio toggled, service restart), those calls routinely fail and the
exception propagates out of the lambda, crashing the process with an
access violation on the failing RaiseException.

Wrap the vulnerable calls in handleLowEnergyDevice with the shared
SAFE()/TRY() helpers from qbluetoothutils_winrt_p.h. SAFE(expr) returns
expr's value on success and a default-constructed value on a caught
hresult_error; TRY(stmt) runs stmt and returns true/false. Both log
the HRESULT.

The covered calls are device.BluetoothAddress() (TRY, so a successfully
read address of 0 -- technically not a valid BD_ADDR per the spec but
allowed by the existing code -- still proceeds, and only an actual
hresult_error causes us to bail), device.Name() (SAFE; an empty hstring
is fine for an unnamed device), device.DeviceInformation().Pairing()
.IsPaired() (SAFE), device.GetGattServicesAsync() (SAFE),
asyncOp.Completed() (TRY; registering the completion handler can also
throw, in which case the handler isn't bound and we have to decrement
the pending counter ourselves), and op.GetResults() inside the
completion lambda (SAFE, so the existing null-check covers both the
thrown and the S_OK-with-null cases with one branch).

In handleGattServices, wrap the whole Status/Services/Uuid block in
try/catch instead of SAFE-wrapping individual calls -- service.Uuid()
returns a winrt::guid that isn't cleanly default-constructible inside
SAFE, and the qScopeGuard at the top already ensures the pending
counter is decremented on any exit path.

Pick-to: 6.11 6.8
Fixes: QTBUG-145898
Change-Id: I9bd6d53773b473ee6d543e1a7e160d91ee08b4a1
Reviewed-by: Ivan Solovev &lt;ivan.solovev@qt.io&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Windows: Move WinRT hresult_error guard macros to a shared header</title>
<updated>2026-05-04T14:13:59+00:00</updated>
<author>
<name>Jarkko Koivikko</name>
<email>jarkko.koivikko@code-q.fi</email>
</author>
<published>2026-04-26T07:50:49+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtconnectivity.git/commit/?id=80b628514cf40009d81a7dfaf1580615135f83e4'/>
<id>80b628514cf40009d81a7dfaf1580615135f83e4</id>
<content type='text'>
The SAFE/HR/TRY/LOG_HRESULT macros that wrap C++/WinRT projection
accessors so a thrown winrt::hresult_error becomes a logged HRESULT
plus a default-constructed return value were defined locally in
qlowenergycontroller_winrt.cpp. The same pattern is needed in other
WinRT bluetooth backend files, so move the definitions into
qbluetoothutils_winrt_p.h, which the affected sources already include.

The unified SAFE() branches on std::is_default_constructible: types
that are default-constructible (primitives, enums, winrt::hstring,
generic interfaces like IAsyncOperation&lt;T&gt; whose nullptr_t constructor
has a default argument) get decltype(x){} on the failure path, while
runtimeclass projections that only declare an explicit
Class(std::nullptr_t) constructor fall back to decltype(x)(nullptr).
The old form decltype(x)(0) reached the second group via the null-
pointer-constant conversion to nullptr_t but failed for winrt::hstring
whose nullptr_t constructor is deleted; a naive decltype(x){} failed
for the runtimeclass projections.

Pick-to: 6.11 6.8
Task-number: QTBUG-145898
Change-Id: I0e2b59bacb551748bf27f7ac74e810f8fdbb005e
Reviewed-by: Ivan Solovev &lt;ivan.solovev@qt.io&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The SAFE/HR/TRY/LOG_HRESULT macros that wrap C++/WinRT projection
accessors so a thrown winrt::hresult_error becomes a logged HRESULT
plus a default-constructed return value were defined locally in
qlowenergycontroller_winrt.cpp. The same pattern is needed in other
WinRT bluetooth backend files, so move the definitions into
qbluetoothutils_winrt_p.h, which the affected sources already include.

The unified SAFE() branches on std::is_default_constructible: types
that are default-constructible (primitives, enums, winrt::hstring,
generic interfaces like IAsyncOperation&lt;T&gt; whose nullptr_t constructor
has a default argument) get decltype(x){} on the failure path, while
runtimeclass projections that only declare an explicit
Class(std::nullptr_t) constructor fall back to decltype(x)(nullptr).
The old form decltype(x)(0) reached the second group via the null-
pointer-constant conversion to nullptr_t but failed for winrt::hstring
whose nullptr_t constructor is deleted; a naive decltype(x){} failed
for the runtimeclass projections.

Pick-to: 6.11 6.8
Task-number: QTBUG-145898
Change-Id: I0e2b59bacb551748bf27f7ac74e810f8fdbb005e
Reviewed-by: Ivan Solovev &lt;ivan.solovev@qt.io&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Update dependencies on 'dev' in qt/qtconnectivity</title>
<updated>2026-04-30T20:08:59+00:00</updated>
<author>
<name>Qt Submodule Update Bot</name>
<email>qt_submodule_update_bot@qt-project.org</email>
</author>
<published>2026-04-30T11:05:30+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtconnectivity.git/commit/?id=92f0ab78acc1b5cd6fdf0b5ab654e48d32b814b3'/>
<id>92f0ab78acc1b5cd6fdf0b5ab654e48d32b814b3</id>
<content type='text'>
Change-Id: I704843028d036cc352a1495925a3e5d7d76f0745
Reviewed-by: Qt Submodule Update Bot &lt;qt_submodule_update_bot@qt-project.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Change-Id: I704843028d036cc352a1495925a3e5d7d76f0745
Reviewed-by: Qt Submodule Update Bot &lt;qt_submodule_update_bot@qt-project.org&gt;
</pre>
</div>
</content>
</entry>
</feed>
