[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 e217389691c8088a8505b32b1523c80489b1849c to 7b2ced8e97beb120fc15760c681f8290d5f91dd5
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 b6399869b2d3de156e8fc2588550ea0c5a010b5a by Qt Cherry-pick Bot (on behalf of Marc Mutz) on 17/08/2026 at 17:48..
Qt::totally_ordered_wapper: make swaps constexpr

Since qt_hash_ptr() is constexpr, and std::swap(), too, at least since
C++20, the totally_ordered_wrapper hidden friends might break
__cpp_lib_constexpr_algorithms, so mark our two swap functions
constexpr.

Add a test.

In case you're wondering "what about qHash()?": can't be, since the T*
overload isn't constexpr, so a larger, orthogonal, change.

Amends 5831c3123594f0d901b381110a41c75dcb9935e2 (6.8).

Picking back all the way, since this is defect users cannot work
around, yet it doesn't affect anyone not using constexpr algorithms.

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

Git commit ad16d2c09fcdabfcb38404c6aad5f80a08b8d411 by Qt Cherry-pick Bot (on behalf of Tor Arne Vestbø) on 17/08/2026 at 17:48..
CMake: Remove dead _qt_internal_should_skip_post_build_deployment_api

The helper was added for qtdeclarative's POST_BUILD deployment, and was
never called from qtbase itself. Its last caller went away when we
retired the build-tree QML deployment step in qtdeclarative's
8cae7ea4ac7ecbc0063d37a713332e252739e745.

Task-number: QTBUG-101338
Change-Id: Ia69b5dc928dcc06aa5e98760743e4ec7d7fe2f0e
Reviewed-by: Alexandru Croitor <[email protected]>
(cherry picked from commit 9456d37ed75a5aea8f7bc438336fb9691d7ff5af)
Reviewed-by: Qt Cherry-pick Bot <[email protected]>
https://invent.kde.org/qt/qt/qtbase/-/commit/ad16d2c09fcdabfcb38404c6aad5f80a08b8d411

Git commit fb3af81ba6138d480d6166d4d5189646ffc9d16c by Qt Cherry-pick Bot (on behalf of Andy Nichols) on 17/08/2026 at 17:48..
ohos: Fix crash when a native sub window can't use SessionManager

Creating a native sub window selected createSubWindowWithOptions()
purely from the device type (everything that is not a phone). That
call requires SystemCapability.Window.SessionManager, and on devices
where it is unavailable at runtime the JS call returns undefined
instead of a Promise. Qt runs inside an embedded UIExtension host
where this happens even when the capability is advertised, so the
resulting rejected promise reached qOhosReportFatalErrorAndAbort()
and terminated the process with SIGABRT, for example when opening a
menu or popup backed by a native sub window.

Query the capability directly with canIUse() instead of guessing from
the device type, and if createSubWindowWithOptions() still fails, fall
back to the @crossplatform createSubWindow() rather than aborting. The
options dropped by createSubWindow() (title, decorations, modality and
rect) are applied separately after creation anyway.

Reference:
https://developer.huawei.com/consumer/en/doc/harmonyos-references/arkts-apis-window-windowstage#createsubwindowwithoptions11

Task-number: QTBUG-148852
Fixes: QTBUG-149105
Change-Id: Id04295c901340b59b1ce13cfef1d584e45202424
Reviewed-by: Liang Qi <[email protected]>
Reviewed-by: SanthoshKumar Selvaraj <[email protected]>
(cherry picked from commit 09ddf5a59c8bfba4913775cf9e11a016832423ea)
Reviewed-by: Qt Cherry-pick Bot <[email protected]>
https://invent.kde.org/qt/qt/qtbase/-/commit/fb3af81ba6138d480d6166d4d5189646ffc9d16c

Git commit 6fe24743369ac42c78c91c7bcca63402f804c949 by Linus Jahn on 17/08/2026 at 17:48..
QNetworkInfo[android]: Advertise Metered feature

The Android backend has connected AndroidConnectivityManager's
meteredChanged signal to setMetered() ever since it gained metered
support, but Feature::Metered was never added to the features list.

isMetered() reads the backend value without consulting that list, so
the value itself has been correct all along. supports(Metered) and
supportedFeatures(), however, do not report it, and since the factory
filters on featuresSupported(), loadBackendByFeatures(Metered) fails
to load a backend at all on Android -- the android plugin is the only
one built there, so there is nothing to fall back to and instance()
returns nullptr.

This is the same omission that was fixed for the Windows backend in
QTBUG-118741.

Amends 83ddf49bc71736a19f27e6e8b72831ea72e441cc

[ChangeLog][QtNetwork][QNetworkInformation] Fixed the Android backend
not advertising Feature::Metered, which made supports(Metered) and
loadBackendByFeatures(Metered) fail on Android, even though isMetered()
returned the correct value.

Fixes: QTBUG-148810
Pick-to: 6.11 6.8
Change-Id: I446fefd2771cd8cb1fc3b1dda2eb2fc45fcfa8e0
Reviewed-by: Mårten Nordheim <[email protected]>
(cherry picked from commit f00ced8d0df829f6ec4507d4784c905888628d6d)
https://invent.kde.org/qt/qt/qtbase/-/commit/6fe24743369ac42c78c91c7bcca63402f804c949

Git commit fd5e1771877506ec9c0ed926ad171225a59065d1 by Robert Löhning on 17/08/2026 at 17:48..
QGuiSvg: Move tests for toDouble() over from qtsvg

I copied the test from qtsvg's tst_qsvghandler.cpp as of
1ba217a64de33ebcae67dc8b0e6db48624157217

I changed to static_assert()s to Q_ASSERT()s because NAN seems to
not be constexpr on VxWorks.

Task-number: QTBUG-149125
Change-Id: Id843bb2b3be55e2925b0b9bcdb554b274e950610
Reviewed-by: Kaj Grönholm <[email protected]>
(cherry picked from commit 0704c91e21c2f6c280f4df203a8603235a0d12a5)
https://invent.kde.org/qt/qt/qtbase/-/commit/fd5e1771877506ec9c0ed926ad171225a59065d1

Git commit c7c694c9b7ba12a78314ef59a53e71dbe04a424e by Assam Boudjelthia on 17/08/2026 at 17:48..
AndroidTestRunner: return command output instead of out-params

execCommand, execAdbCommand, execBundletoolCommand and
adbReadAppFile returned bool and filled a QByteArray
out-parameter, so most callers paired a fresh QByteArray with a
negated call. QByteArray's null state already models that
success/value split.

Return the captured output instead: a null result means the
command failed (could not start, timed out, or exited
non-zero), a non-null one carries its output, so callers test
with isNull(). A silently succeeding command keeps a non-null
empty result to stay distinct from failure.

execCommand now prints a failed command's stdout itself, gated
on the per-call verbose flag, so the build and pre-test callers
no longer need the out-parameter to report why a command
broke; routine adb polls pass verbose=false and stay quiet.

Task-number: QTBUG-146960
Change-Id: I4cc114a606553f24fc05926732490b0c76b209cd
Reviewed-by: Ville Voutilainen <[email protected]>
(cherry picked from commit a73a64106c290046f05b86c86c295c781b5aedad)
https://invent.kde.org/qt/qt/qtbase/-/commit/c7c694c9b7ba12a78314ef59a53e71dbe04a424e

Git commit cd2ab069eafa9009754efe4bdc18ce269d5cf014 by Assam Boudjelthia on 17/08/2026 at 17:48..
AndroidTestRunner: probe the stdout file with head -c 0

waitForLoggingStarted() probes for the device-side output
file before tailing it. Use `head -c 0 files/X 2> /dev/null`
instead of listing it with ls. That will  read nothing and
just reflects the file's openability, so it returns empty
output on a hit and a null result on a miss, which maps
cleanly onto the isNull() check.

Side note: the probe runs under run-as, which exec's the
command directly, so it has to be a real binary. This works
as opposed to `test -e` that is rejected by run-as on
Android 9.

Task-number: QTBUG-146960
Change-Id: I0991a5a252fd4819324116a5ec549c501f464599
Reviewed-by: Ville Voutilainen <[email protected]>
(cherry picked from commit e4f26ca598d0d5ab1cd193929119321728bf6ae4)
Reviewed-by: Qt Cherry-pick Bot <[email protected]>
https://invent.kde.org/qt/qt/qtbase/-/commit/cd2ab069eafa9009754efe4bdc18ce269d5cf014

Git commit d9d8e13a1ae854c828f1029c037c0b4f476a7ded by Assam Boudjelthia on 17/08/2026 at 17:48..
AndroidTestRunner: warn on logcat fetch fail instead of qCritical

A failed logcat fetch is non-fatal where fetchLogcat() returns
the empty result and the caller carries on regardless. Using
qCritical() in that case is slightly inaccurate, so use
qWarning() instead.

Task-number: QTBUG-146960
Change-Id: I51b799a8884a0d47fe75e27734f307ed7785bc54
Reviewed-by: Ville Voutilainen <[email protected]>
(cherry picked from commit 1e5532f01b178c1b1b182b0491d714b2812347b0)
Reviewed-by: Qt Cherry-pick Bot <[email protected]>
https://invent.kde.org/qt/qt/qtbase/-/commit/d9d8e13a1ae854c828f1029c037c0b4f476a7ded

Git commit a40c3c649552b14e573e252bb3ac791c75b559dc by Assam Boudjelthia on 17/08/2026 at 17:48..
AndroidTestRunner: surface launch crashes when am start fails

am start -W only returns once the activity is up. A crash
before main never lets it report that, so on Android 9 the
command hangs until the adb timeout and the runner then
exited EXIT_ERROR with no clue why.

Run the logcat crash analysis on that failure and return
EXIT_NOEXITCODE, so a pre-main crash gets the same ndk-stack
diagnostics as a crash during the test.

Task-number: QTBUG-146960
Change-Id: Ie24e0807dcbe757ea61585c2fb02cde25a5325e0
Reviewed-by: Ville Voutilainen <[email protected]>
(cherry picked from commit f9e5d26adec792e094f639898859499548d588e6)
Reviewed-by: Qt Cherry-pick Bot <[email protected]>
https://invent.kde.org/qt/qt/qtbase/-/commit/a40c3c649552b14e573e252bb3ac791c75b559dc

Git commit 3c228b8f967b98c18276225bdf17158b7d95f745 by Assam Boudjelthia on 17/08/2026 at 17:48..
AndroidTestRunner: parse CLI arguments via QCommandLineParser

Replace the hand-rolled if/else loop and printHelp() with
QCommandLineParser, dropping the parallel help text that had to track
parseOptions() by hand.

A splitOwnAndTestArgs preprocessor inserts -- ahead of the first
unknown arg, so CI wrappers can keep appending QTest's bare CLI
("-o file,xml", "-,txt") without a separator. The set of known
options is derived from what the parser already has. The
preprocessor fails the run early with "Option --<name> requires a
value." when a value-taking flag is the last argv entry, instead
of letting the parser report a less informative "Missing value".

When --aab is given, verify the --bundletool path actually exists
up front so a missing jar surfaces a clear runner-level error
instead of a confusing 'java -jar /no/such.jar' failure later.

Behavioural change: option matching is now case sensitive.

Task-number: QTBUG-146960
Change-Id: I2cda0e45919c5edfc033c0062df37ddfa08fca48
Reviewed-by: Ville Voutilainen <[email protected]>
(cherry picked from commit b79ee960343d7bedf97520a0c7338481436a02fd)
https://invent.kde.org/qt/qt/qtbase/-/commit/3c228b8f967b98c18276225bdf17158b7d95f745

Git commit b4e39212b698e3e8ed6c182ff4b4d3999ebf3ef7 by Assam Boudjelthia on 17/08/2026 at 17:48..
AndroidTestRunner: add tst_androidtestrunner

A Python orchestrator under tests/auto/util/androidtestrunner/
drives the host androidtestrunner against a testapp on a device.
The testapp builds as MANUAL so it is not a ctest entry itself.

CommandLineTests exercise the parser without a device:

- help and case sensitivity
- --apk and --aab conflicts
- bare CI -o forms
- --verbose
- --timeout (killing a hanging adb)
- value-taking option at end of argv ("Option --apk requires a value")
- manifest fallback discovery, explicit override, and non-existent path
- --bundletool path existence check
- --activity option is accepted
- INSTALL_ROOT scoping to the GNU-make family
- --skip-install-root override
- missing APK detection
- device discovery and serial-pin paths

DeviceRunTests run against a real device:

- scenario-controlled exits (pass / fail / skip / crash / qFatal)
- function and data-tag selection
- QT_ and QTEST_ env-var forwarding with spaces
- every -o output format
- ndk-stack symbolication with default and explicit --ndk-stack,
  missing path, non-zero exit, and non-executable file
- ANR detection
- AAB install + run
- per-serial QLockFile recovery and concurrent same-serial serialise
- --show-logcat
- --pre-test-adb-command
- SIGINT cleanup

The class auto-skips when no device is attached and tearDown
uninstalls the testapp. ANR and SIGINT cases poll dumpsys for
the foreground focus rather than relying on a fixed sleep, and
the concurrent lock test staggers the second runner via a
pre-test adb sleep so it is deterministically the one that waits.

fake_adb and fake_make context managers back the device-free tests.

Task-number: QTBUG-146960
Change-Id: I80acd75d232696f9a68bd71a68ae96426446e791
Reviewed-by: Ville Voutilainen <[email protected]>
(cherry picked from commit 679cc6eea2a38121b88776102c222648795960bc)
Reviewed-by: Qt Cherry-pick Bot <[email protected]>
https://invent.kde.org/qt/qt/qtbase/-/commit/b4e39212b698e3e8ed6c182ff4b4d3999ebf3ef7

Git commit 7d27d67f82c7f88908e7f19fc343813c290cd98d by Assam Boudjelthia on 17/08/2026 at 17:48..
CMake/Android: quote "$@" in the generated runner wrapper

The runner wrapper script forwarded its arguments with an
unquoted $@, so the shell word-split every argument. When
qt-testrunner re-ran a failed data row it passed the tag as
one argument, for example

    parseFile:from_file:extended multiplexing

which reached the test as two test names, and the re-run
failed with "Function not found: multiplexing" instead of
repeating the row. Flaky data rows with a space in the tag
could therefore never pass on Android.

Add a test for the wrapper and one that checks a test
argument with a space survives adb, the device shell and
QProcess::splitCommand().

Change-Id: I8a0f191451530ee529f63f26fe4e647bd6c26d16
Reviewed-by: Ville Voutilainen <[email protected]>
(cherry picked from commit 03febb4a7f9d08054a2ac9430adc079eff3f3bb9)
https://invent.kde.org/qt/qt/qtbase/-/commit/7d27d67f82c7f88908e7f19fc343813c290cd98d

Git commit 7d956f17ecc2c6c16d1fe15c45d8441a85bcc4bc by Assam Boudjelthia on 17/08/2026 at 17:48..
AndroidTestRunner: keep parsing our options after test args

CMake appends the runner's own flags after the test's, so
QML tests got -import ahead of --timeout. Bailing out of
option parsing at the first test argument handed --timeout
to the app, which QTest rejects and exits 1 before writing
any results, failing the run with EXIT_NOEXITCODE.

Sort argv into both groups instead and re-join them with an
explicit separator.

Fixes: QTBUG-148805
Change-Id: I850a1f1090e3fb0f5d2bf2b5611d18c8a645cda2
Reviewed-by: Ville Voutilainen <[email protected]>
(cherry picked from commit ddf0886b4f0c872e48219b6c1555ee7cd31bb4a6)
https://invent.kde.org/qt/qt/qtbase/-/commit/7d956f17ecc2c6c16d1fe15c45d8441a85bcc4bc

Git commit a52237afa96e1b435cf882705dd621b4b5940ea5 by Qt Cherry-pick Bot (on behalf of Edward Welbourne) on 17/08/2026 at 17:48..
tstQDateTime arithmetic: s/timeSpec/timeRepresentation/

Test the full mode of representation of the time rather than just the
category of representation. In practice this means, for a fixed offset
from UTC, checking the offset and, for a timezone, checking it's the
same zone.

While we're at it, compare against the representation given for the
expected result, rather than the original value: the two should in
fact be the same, but (a) this is more in keeping with "compare actual
to expected" patterns and (b) if there ever arises a case where such
arithmetic could trigger a representation change, this lets the test
case for it represent that in its expected result.

Pick-to: 6.11 6.8 6.5
Change-Id: I861f48e743d6b8527e45037b605accd1f70f3ae2
Reviewed-by: Mate Barany <[email protected]>
(cherry picked from commit 3a34c6cc2f5fa36c02aa92daad1a769a03807e2e)
Reviewed-by: Qt Cherry-pick Bot <[email protected]>
https://invent.kde.org/qt/qt/qtbase/-/commit/a52237afa96e1b435cf882705dd621b4b5940ea5

Git commit 00b2807d78fdcbd40bac53bc60720224c25732a6 by Qt Cherry-pick Bot (on behalf of Mårten Nordheim) on 17/08/2026 at 17:48..
QHostInfo: Mark static functions threadsafe

They are meant to be used from any thread, so must be so.

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

Git commit 70e4885194aa699102b47a33ce2071c8e4a38e3b by Qt Cherry-pick Bot (on behalf of Laszlo Agocs) on 17/08/2026 at 17:48..
rhi: d3d12: Set RTsSingleHandleToDescriptorRange to false

...for OMSetRenderTargets. The descriptors are not guaranteed
to be contiguous, each RTV is created by calling allocate(1).
They may often end up being contiguous but that's by accident.

Set RTsSingleHandleToDescriptorRange to FALSE to indicate
pRenderTargetDescriptors is an array of handles and each element
needs to be dereferenced individually.

Fixes: QTBUG-149220
Pick-to: 6.11 6.8
Change-Id: I456123babb5b6f4fa6582c4fb908667830914e78
Reviewed-by: Andy Nichols <[email protected]>
(cherry picked from commit d927d8682524e44f86df9f4b24299136fcfbc5b3)
Reviewed-by: Qt Cherry-pick Bot <[email protected]>
https://invent.kde.org/qt/qt/qtbase/-/commit/70e4885194aa699102b47a33ce2071c8e4a38e3b

Git commit 7b2ced8e97beb120fc15760c681f8290d5f91dd5 by Qt Cherry-pick Bot (on behalf of Mårten Nordheim) on 17/08/2026 at 17:48..
QHostInfo: Mark clearCache() threadsafe

From API review

Change-Id: I3850628ee6b62684fc434184c14d6144ba5d4f40
Reviewed-by: Yauheni Pervenenka <[email protected]>
Reviewed-by: Thiago Macieira <[email protected]>
(cherry picked from commit ba2681253654e846c2a2c736380b1d4e75fca483)
Reviewed-by: Qt Cherry-pick Bot <[email protected]>
https://invent.kde.org/qt/qt/qtbase/-/commit/7b2ced8e97beb120fc15760c681f8290d5f91dd5
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.