[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