[qt/qt/qtbase]: Summary of bulk changes made

KDE Git Services - Bulk Change <[email protected]>
Newsgroups gmane.comp.kde.cvs
Message-ID <[email protected]>
Git repository change summary for qt/qt/qtbase
Pushed by mirror-service into branch '6.12'.
Changed from 3dd9e8f26c7a4fe538d98f9f697196fd924e4778 to 695dab832f606efac43be67f27716b62dbde73df
Acknowledgement was received that this change introduces only existing code that has been pushed to another public open source repository.

This change contains the following new commits:

Git commit c081495e2cbd96cc4d64a1f10311782117867b00 by Qt Cherry-pick Bot (on behalf of Tor Arne Vestbø) on 31/07/2026 at 14:32..
cmake: Mask Qt's Clang module maps when building with Clang modules

We generate and ship Clang module maps for Qt's modules to support Swift
consumers. Normal C++ consumers don't pick them up, unless they build
with explicit support for C++ Clang modules via -fmodules -fcxx-modules,
in which case Clang translates every Qt include into an implicit @import
of the corresponding Qt module, along with a build of that module.

Our module maps should work fine for C++ usage too, but we want to avoid
any risk of regression for C++ consumers, so we now ship a Clang VFS
overlay next to each module map that masks it, and pass it via
-ivfsoverlay for targets that we detect are building with Clang modules.
That makes the Qt includes textual again, without affecting the module
maps of any other library, or those of the platform SDK.

The overlay masks the module map by redirecting it to a file that does
not exist, which makes Clang report the module map as missing. Both
paths in the overlay are relative to the overlay itself, so it stays
valid for a relocated Qt, and can be shipped as is.

The detection happens during finalization, so it only covers targets
created via qt_add_executable. The QT_DISABLE_CLANG_MODULE_MAPS
target property, or the corresponding variable, can be set explicitly to
opt out of the detection, or to opt in for targets we don't detect.

Relying on the overlay's 'root-relative' key limits this to Clang 16,
both upstream and Apple, as older versions reject unknown keys outright,
but we assume those that use -fcxx-modules use a recent Clang version.

Task-number: QTBUG-141360
Change-Id: I29702e05bff390f48def172cd9219747a93bbfe1
Reviewed-by: Alexandru Croitor <[email protected]>
(cherry picked from commit 9f5bef9a320a688625219c236f639f7dc5fa54d6)
Reviewed-by: Qt Cherry-pick Bot <[email protected]>
https://invent.kde.org/qt/qt/qtbase/-/commit/c081495e2cbd96cc4d64a1f10311782117867b00

Git commit 11d197390c6cda8a655858226dace37a1317cd10 by Qt Cherry-pick Bot (on behalf of Tor Arne Vestbø) on 31/07/2026 at 14:32..
Rename test_clang_header_map -> test_clang_module_maps

Change-Id: I4e00a883e439840420fb958c5951bcaa82d3099f
Reviewed-by: Alexandru Croitor <[email protected]>
(cherry picked from commit c70c834d5a76b49fffda9b92ea29d8a008f40d73)
Reviewed-by: Qt Cherry-pick Bot <[email protected]>
https://invent.kde.org/qt/qt/qtbase/-/commit/11d197390c6cda8a655858226dace37a1317cd10

Git commit 2a42de274d8057bad633c8619dd9f8c299731c80 by Qt Cherry-pick Bot (on behalf of Tor Arne Vestbø) on 31/07/2026 at 14:32..
Harden test_clang_module_maps condition detection

Even for a prefix build the user might end up running the test from
the build dir, which will fail the test.

Move the detection to the test directory itself, to catch the case
where the user wants to build only the module map test.

Change-Id: Ia293345a3a089ea574922d7685aecaed6853fe72
Reviewed-by: Alexandru Croitor <[email protected]>
(cherry picked from commit 6a45d29fa50321af949d979b175cb248c0e4de95)
Reviewed-by: Qt Cherry-pick Bot <[email protected]>
https://invent.kde.org/qt/qt/qtbase/-/commit/2a42de274d8057bad633c8619dd9f8c299731c80

Git commit ada99138b29696487793e1891b3d5b3f4f519539 by Qt Cherry-pick Bot (on behalf of Dawid Śliwa) on 31/07/2026 at 14:32..
tst_QWindow: share non-fullscreen predicate

Several window geometry tests need to decide whether the platform can
honor requested top-level positions and sizes. They query the
NonFullScreenWindows capability directly at each call site, duplicating
the platform decision and its implementation details.

Introduce a file-local predicate and migrate all existing checks to it.
This gives tests that need the same decision one consistent expression
to reuse.

Task-number: QTBUG-148260
Change-Id: I3642be6b738d94bc5f6a61bd5a121f5091f1fb5a
Reviewed-by: Zbigniew Chyla <[email protected]>
Reviewed-by: Liang Qi <[email protected]>
(cherry picked from commit 0ec0a05addeb026e201ad3e142845d715386919b)
Reviewed-by: Qt Cherry-pick Bot <[email protected]>
https://invent.kde.org/qt/qt/qtbase/-/commit/ada99138b29696487793e1891b3d5b3f4f519539

Git commit 2228be5e8d325514a0541bd34932a205cc391be1 by Qt Cherry-pick Bot (on behalf of Axel Spoerl) on 31/07/2026 at 14:32..
Fix flakiness in tst_QWindow::testInputEvents()

The test function processed one event before testing with QCOMPARE.
When another system event gets in the way, the pending input event
doesn't get delivered and the test starts to flake.

Remove QCoreApplication::processEvent() calls and substitute
QCOMPARE with QTRY_COMPARE, which processes events until the predicate
yields true.

Fixes: QTBUG-136999
Pick-to: 6.11 6.8 6.5
Change-Id: I8c6cc29da565aef9f15261d4f5f66961ec89d82e
Reviewed-by: Tor Arne Vestbø <[email protected]>
(cherry picked from commit b687b72dbffc3cc60db6ffe3d55ec7b08b30efe2)
Reviewed-by: Qt Cherry-pick Bot <[email protected]>
https://invent.kde.org/qt/qt/qtbase/-/commit/2228be5e8d325514a0541bd34932a205cc391be1

Git commit 31dbfea575b2ab6fc92fe3723d3eb92c44db89ec by Qt Cherry-pick Bot (on behalf of Marc Mutz) on 31/07/2026 at 14:32..
tst_QDateTime: extend the tests for msec over/underflow to the argument

The old tests set the extreme values on the QDateTime (LHS), and then
added or subtracted one (1) (addMSecs() argument, RHS). What was not
tested was to start with the ±1 on LHS and then add or subtract the
extreme values.

Add those tests. Lucky for us, they pass (incl. in ubsan builds).

Amends 2a6f2fe9ef9a5d0755443ba94183d97b2fac1a28 (6.0).

Pick-to: 6.11 6.8 6.5
Change-Id: Ie3076b845944a6890fa7423f03d850681beeb0a0
Reviewed-by: Thiago Macieira <[email protected]>
(cherry picked from commit 5919760e3283bb609d9d9f534c02344ae264839e)
Reviewed-by: Qt Cherry-pick Bot <[email protected]>
https://invent.kde.org/qt/qt/qtbase/-/commit/31dbfea575b2ab6fc92fe3723d3eb92c44db89ec

Git commit a9bb29debc88993c89bbfd0eebaca532f877c9b1 by Qt Cherry-pick Bot (on behalf of Marc Mutz) on 31/07/2026 at 14:32..
QBasicAtomic: fix UB (signed overflow) in some operators

The underlying atomic operations are fine (required by the standard,
cf. Note in ¹), but our adjustments of the return value were not, and
could overflow.

Fix by using unsigned arithmetic to do the calculation as required by
the standard:

¹ https://eel.is/c++draft/atomics.types.generic#atomics.types.int-8

Found by ubsan complaining about signed overflow in
tst_qatomicinteger_<signed int> tests.

Amends 19c70982517e76d89bb3da931e1390a6386603da (5.3).

[ChangeLog][QtCore][QAtomicInt/QAtomicInteger] Fixed signed arithmetic
in prefix increment and decrement and in += and -= to be in two's
complement, matching std::atomic's behavior, rather than overflowing
(causing undefined behavior).

Pick-to: 6.11 6.8 6.5 5.15
Change-Id: Ic1aa41a803bca9a2d873d7ada8343d0ca01e3fe4
Reviewed-by: Giuseppe D'Angelo <[email protected]>
Reviewed-by: Thiago Macieira <[email protected]>
(cherry picked from commit 55df5ccd997446760364f55aa041efc7c80d6fdd)
Reviewed-by: Qt Cherry-pick Bot <[email protected]>
https://invent.kde.org/qt/qt/qtbase/-/commit/a9bb29debc88993c89bbfd0eebaca532f877c9b1

Git commit 522a899290e17b547c7f773873c2d1e84b8caae2 by Qt Cherry-pick Bot (on behalf of Marc Mutz) on 31/07/2026 at 14:32..
QDecompressHelper: mark isSupportedEncoding() noexcept

It conceptually should be, and the implementation actually calls only
noexcept functions, so it's safe to commit to the no-fail label.

Amends 07b008425acb1f550c3e6e96e2bd6033fe86976a (6.0), the addition of
the class.

Pick-to: 6.11 6.8
Change-Id: I648b9cb1de4ccbc315f5f2ece8985632f58b74f5
Reviewed-by: Thiago Macieira <[email protected]>
Reviewed-by: Dennis Oberst <[email protected]>
(cherry picked from commit dc93a3b1c6654bf29c53ee448c3c1ffe6a859958)
Reviewed-by: Qt Cherry-pick Bot <[email protected]>
https://invent.kde.org/qt/qt/qtbase/-/commit/522a899290e17b547c7f773873c2d1e84b8caae2

Git commit 8df95e66def1ac0b46cd39fcc04a67d6322d84ec by Qt Cherry-pick Bot (on behalf of Marc Mutz) on 31/07/2026 at 14:32..
QOCICols: don't pattern-init 64KiB of stack memory

Another performance regression caused by
9ff1e6d80bbd5b44b9ec4c0a837d9a4c962698e4.

Found by the function being rejected while trying to build qtbase with
-Wframe-larger-than=20KiB.

Pick-to: 6.11 6.8
Change-Id: I26d1e85db8d6eaf58d29b2e05da8cad90a195ad3
Reviewed-by: Giuseppe D'Angelo <[email protected]>
(cherry picked from commit 7eeb08d217ca941260b759be388f6bbee423fbc7)
Reviewed-by: Qt Cherry-pick Bot <[email protected]>
https://invent.kde.org/qt/qt/qtbase/-/commit/8df95e66def1ac0b46cd39fcc04a67d6322d84ec

Git commit 118a728e7286f19418964e9538cff135003bfb4e by Qt Cherry-pick Bot (on behalf of Marc Mutz) on 31/07/2026 at 14:32..
QString: remove unused qthreadstorage.h

The last user of QThreadStorage in this TU was moved to qcollator.cpp
in a9d8794cf0be617d9eedbf9bb0d6d5401735d6f2 (6.3).

Pick-to: 6.11 6.8
Change-Id: I951b024c6a8e069c1cb9eb12c0e71094bdedcd40
Reviewed-by: Thiago Macieira <[email protected]>
(cherry picked from commit 1c285d07760b5b0b6f8c7f8dde47fd4b922a94e7)
Reviewed-by: Qt Cherry-pick Bot <[email protected]>
https://invent.kde.org/qt/qt/qtbase/-/commit/118a728e7286f19418964e9538cff135003bfb4e

Git commit a70e7f67ce69a743d8493510c8b32ee779ded48a by Qt Cherry-pick Bot (on behalf of Marc Mutz) on 31/07/2026 at 14:32..
tst_QKeyCombination: suppress deprecation warning emitted by API under test

Amends 1f77e8566f71d98f4bc6bbf5092594e67a32f268 (picked to 6.2).

Pick-to: 6.11 6.8
Change-Id: I2b396154057985ff9cca71192f0d67e62bd83451
Reviewed-by: Thiago Macieira <[email protected]>
(cherry picked from commit c3231cd78597207902d517b6032e5c4ac27100d0)
Reviewed-by: Qt Cherry-pick Bot <[email protected]>
https://invent.kde.org/qt/qt/qtbase/-/commit/a70e7f67ce69a743d8493510c8b32ee779ded48a

Git commit 7487ff4f96560123f6fd33a41cb0381f80eee848 by Qt Cherry-pick Bot (on behalf of Marc Mutz) on 31/07/2026 at 14:32..
tst_QLogging: fix -Wunused-result in race_helper

... using the std::ignore trick.

Also treat poll(), even though GCC doesn't warn about it, to keep
indentation consistent, and to record intent.

Amends 6e37cd4176368bee838161f5353038027bcdbe50 (picked to 6.5).

Pick-to: 6.11 6.8
Change-Id: Ia4ba0967eece28ed7c35fe15b04c8b7d938ac029
Reviewed-by: Thiago Macieira <[email protected]>
(cherry picked from commit 71ccc59fb8a24de085d2284a4ae094c9b43efb06)
Reviewed-by: Qt Cherry-pick Bot <[email protected]>
https://invent.kde.org/qt/qt/qtbase/-/commit/7487ff4f96560123f6fd33a41cb0381f80eee848

Git commit 48e629a11221f7346818d2cc06659c0a8f7aa456 by Qt Cherry-pick Bot (on behalf of Marc Mutz) on 31/07/2026 at 14:32..
tst_QStorageInfo: fix GCC -Wformat-truncation

GCC 15 (in ubsan/asan mode) warned:

  In function ‘int vsnprintf(char*, size_t, const char*, __va_list_tag*)’,
    inlined from ‘int qInfoPrinter(const char*, ...)’ at tst_qstorageinfo.cpp:78:33:
  /usr/include/x86_64-linux-gnu/bits/stdio2.h:80:36: warning: null format string [-Wformat-truncation=]
   80 |   return __builtin___vsnprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1,
      |          ~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   81 |                                     __bos (__s), __fmt, __ap);
      |                                     ~~~~~~~~~~~~~~~~~~~~~~~~~

But all callers (through the function pointer in printVolumes()) pass
non-nullptr string literals, so it's a False Positive. Claude confirms
it's a known problem of the GCC warning, but its fix
(__attribute__((format))) didn't work, so I tried Q_PRESUME, and that
fixed it.

Amends a26435d65ceac5d714d5cc7d5af2326e162d7a41 (5.7).

Picking to all active non-ESM branches, knowing that in 6.8, we'll
need to use Q_ASSUME (Q_PRESUME is \since 6.11).

Pick-to: 6.11 6.8
Change-Id: Ib91b26d2f75c7d3618e14c8a222e3a4d15c08c6c
Reviewed-by: Thiago Macieira <[email protected]>
(cherry picked from commit 19810242a1661191a577ee599747e374f89faa91)
Reviewed-by: Qt Cherry-pick Bot <[email protected]>
https://invent.kde.org/qt/qt/qtbase/-/commit/48e629a11221f7346818d2cc06659c0a8f7aa456

Git commit 71ffdf8e7b021fe8902e7410c6185276aec7e4c3 by Qt Cherry-pick Bot (on behalf of Marc Mutz) on 31/07/2026 at 14:32..
QSet: add rvalue-this overload of values()

This is an optimization users could not access, since both iterator
and const_iterator dereference to const T&, so cannot be moved from.
So this is required to form an efficient basis of operations.

Found in API-review.

[ChangeLog][QtCore][QSet] Added rvalue-this overload of values().

Change-Id: Iad7bd8dc394e37f7d387a1a917d24c6cedcc221a
Reviewed-by: Mårten Nordheim <[email protected]>
Reviewed-by: Thiago Macieira <[email protected]>
(cherry picked from commit 163e23edd42d47a5bf0c1b9b63928e66da9b374e)
Reviewed-by: Qt Cherry-pick Bot <[email protected]>
https://invent.kde.org/qt/qt/qtbase/-/commit/71ffdf8e7b021fe8902e7410c6185276aec7e4c3

Git commit 63b4c9f069ad7192d52f10872d5bf1e93fc7a1ac by Qt Cherry-pick Bot (on behalf of Laszlo Agocs) on 31/07/2026 at 14:32..
QtOpenGL: add more trusted-content notes

QOpenGLShader and QOpenGLShaderProgram already carry this. Add a few
more for completeness.

Task-number: QTBUG-148531
Pick-to: 6.11 6.8
Change-Id: I34660aa7748bc67692c8243d4ed3b2da4917525a
Reviewed-by: Andy Nichols <[email protected]>
(cherry picked from commit 8909e6458566e6a5407f501d0f91968b785af7d8)
Reviewed-by: Qt Cherry-pick Bot <[email protected]>
https://invent.kde.org/qt/qt/qtbase/-/commit/63b4c9f069ad7192d52f10872d5bf1e93fc7a1ac

Git commit 440fe3dca670ceb67bf18b5b22e4a6c5bce7dcbf by Qt Cherry-pick Bot (on behalf of Dennis Kim) on 31/07/2026 at 14:32..
ohos: Fix window position after destroy() and recreation

QOhosPlatformWindow::initialize() stored the initial geometry through
the top-level QPlatformWindow::setGeometry(), bypassing the client/frame
conversion that QOhosPlatformWindow::setGeometry() performs based on
QWindowPrivate::positionPolicy. When a position is requested before the
platform window exists (setFramePosition() then show()), the policy is
WindowFrameInclusive and the requested top-left is frame-relative, so
QPlatformWindow::geometry() ended up holding a frame-relative position
instead of the client one.

The problem was masked on the first show(): the native layout reported
the real client geometry back through handleGeometryChange(), correcting
QWindowPrivate::geometry. After destroy() the core resets the policy to
WindowFrameExclusive and the stored geometry already holds client
coordinates, so on the next show() nothing corrected it and
QWindow::position() no longer matched the value seen before destroy().

Call QOhosPlatformWindow::setGeometry() explicitly so the client/frame
conversion is applied and m_lastRequestedWindowFrameGeometry is derived
the same way as during a normal geometry change. The class is named
explicitly to reach this level directly rather than the
QOhosFloatingWindow override, which would additionally emit a screen
change from within window creation.

Task-number: QTBUG-148052
Task-number: QTBUG-148261
Change-Id: I5b8268362dc3c8a5b9894efe38d95f44facd8218
Reviewed-by: Liang Qi <[email protected]>
Reviewed-by: Zbigniew Chyla <[email protected]>
Reviewed-by: Seokha Ko <[email protected]>
Reviewed-by: Dawid Śliwa <[email protected]>
(cherry picked from commit 84b1dc8c26119b5419ffe961b6406ee388876870)
Reviewed-by: Qt Cherry-pick Bot <[email protected]>
https://invent.kde.org/qt/qt/qtbase/-/commit/440fe3dca670ceb67bf18b5b22e4a6c5bce7dcbf

Git commit 2691f684f9beb35c609022671c98167b24e63877 by Qt Cherry-pick Bot (on behalf of Laszlo Agocs) on 31/07/2026 at 14:32..
rhi: d3d12: Bind texture and sampler arrays as one descriptor range

A QRhiShaderResourceBinding with an array of textures/samplers
(count > 1) was translated into count descriptor ranges of one
descriptor each, and for samplers into count separate root parameters.
D3D12 does not accept that as binding a shader-declared resource
array; pipeline creation fails with

  Root Signature doesn't match Pixel Shader: Shader sampler descriptor
  range (BaseShaderRegister=0, NumDescriptors=8, RegisterSpace=0) is
  not fully bound in root signature

and likewise for the SRV range.

This only happens with shaders that have SM 6.0 (or 5.1) bytecode. SM
5.0 DXBC has no descriptor ranges: there an array of textures is
declared as t0, t1, ... individually, and a series of one-descriptor
ranges covering the same registers matches that just fine. With DXIL
the array becomes a single shader-declared range of count descriptors,
and then the root signature has to cover it with one range as well.
Since practically all shaders shipped with Qt are built with --hlsl
50, this went unnoticed: the existing tst_qrhi test for an array of
combined image samplers passes with the D3D12 backend as-is, and only
starts failing once its fragment shader is rebuilt for SM 6.0.

Visit textures and samplers per binding instead of per array element,
and emit a single range with NumDescriptors == count. The SRV
descriptors already get copied into a consecutive block of the
shader-visible heap, so only the range construction changes there. The
per-sampler shader-visible descriptors are scattered around the
sampler heap, so an array of samplers now gets a dedicated run of
consecutive descriptors from QD3D12SamplerManager, cached by the list
of sampler descriptions (not by QRhiSampler objects, so unrelated srbs
with the same filtering and addressing modes share one run).

Bindings with a single texture/sampler, which is everything in
practice today, end up with the same root signature and the same
descriptors as before.

Add a tst_qrhi test that renders with an array of 8 sampled textures,
each filled with a single color and sampled into a column of its own,
so that the result also shows whether the array ended up in the right
order. Two different samplers alternate in the array, to get a run of
non-identical sampler descriptors. The shaders are built for SM 6.0 in
addition to 5.0, which is what makes the test exercise the descriptor
range path with D3D12.

Pick-to: 6.11 6.8
Change-Id: I37b38bb35fd2953cf52166255ac931a51cef819e
Reviewed-by: Andy Nichols <[email protected]>
(cherry picked from commit 7f10a899198034157b43181e946b10090283b081)
Reviewed-by: Qt Cherry-pick Bot <[email protected]>
https://invent.kde.org/qt/qt/qtbase/-/commit/2691f684f9beb35c609022671c98167b24e63877

Git commit 927c9ad4b7a05a77e9b10a47a01b9283dc7d12e0 by Qt Cherry-pick Bot (on behalf of Laszlo Agocs) on 31/07/2026 at 14:32..
rhi: d3d12: Route debug layer warnings to qDebug, when possible

Try to behave like we do with Vulkan. There is a pre-existing
minor issue: this now makes some debug layer messages show up
with D3D12 for two test cases in tst_qrhi. Previously these
were only visible on the Windows debug output. Not handling
those here.

Change-Id: Ibd4ddaec3cdb7f5df4f5a49a38047f568b60e8c4
Reviewed-by: Andy Nichols <[email protected]>
(cherry picked from commit 8dd64c5df599b56939602bad94f7ebef7652fe06)
Reviewed-by: Qt Cherry-pick Bot <[email protected]>
https://invent.kde.org/qt/qt/qtbase/-/commit/927c9ad4b7a05a77e9b10a47a01b9283dc7d12e0

Git commit 695dab832f606efac43be67f27716b62dbde73df by Qt Cherry-pick Bot (on behalf of Laszlo Agocs) on 31/07/2026 at 14:32..
rhi: d3d12: Discard resolve destination subresources when needed

The subresources of a placed resource must be initialized with a
Discard, Clear, or Copy operation before they can be used for anything
else. ResolveSubresource is not one of those operations, so resolving
into a texture that was never rendered into makes the debug layer
complain.

Fix it by discarding upfront, but only the destination subresources
that are about to be overwritten by the resolve, and only once for
each of them.

This gets rid of the debug layer messages from the
renderToTextureArrayMultiView test case in tst_qrhi.

Change-Id: I6add9447ff946257293e97864972b4f5be49e73f
Reviewed-by: Andy Nichols <[email protected]>
(cherry picked from commit c13fd99f923c90c28e8cea23719bce119dd13fab)
Reviewed-by: Qt Cherry-pick Bot <[email protected]>
https://invent.kde.org/qt/qt/qtbase/-/commit/695dab832f606efac43be67f27716b62dbde73df
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.