summaryrefslogtreecommitdiffstats
path: root/src/corelib/global
Commit message (Collapse)AuthorAgeFilesLines
* Prevent repeated instantiations of some qRegisterNormalizedMetaType<>s [1/N] ↵Marc Mutz2022-01-212-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (QtGui) Create macros that wrap the magic developed in 7d63efc16f65f98c657caa90e0d7e9b72a879ade and apply it to all Q_DECLARE_METATYPE invocations that show up in Clang -ftime-trace for a PCH'ed QtGui build. Effects on compile times: Clang 10 -ftme-trace: $ ClangBuildAnalyzer --analyze qtgui-before.trace | head -n6 Analyzing build trace from 'qtgui-before.trace'... **** Time summary: Compilation (523 times): Parsing (frontend): 628.3 s Codegen & opts (backend): 304.5 s $ ClangBuildAnalyzer --analyze qtgui-after.trace | head -n6 Analyzing build trace from 'qtgui-after.trace'... **** Time summary: Compilation (523 times): Parsing (frontend): 546.0 s Codegen & opts (backend): 304.4 s GCC 11 time (bash builtin): before: $ time for ((i=0; i < 3; ++i)) do touch src/gui/painting/qpolygon.h ; ninja libQt6Gui.so; done real 4m13,539s user 49m24,416s sys 3m18,177s after: $ time for ((i=0; i < 3; ++i)) do touch src/gui/painting/qpolygon.h ; ninja libQt6Gui.so; done real 3m55,697s user 45m19,941s sys 3m7,370s Task-number: QTBUG-97601 Pick-to: 6.3 Change-Id: Ia8e37a58937568a7ed21cfeb4b27274deca4d53b Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* qsimd_p.h: add a hack to allow AVX to work with MinGWThiago Macieira2022-01-201-0/+23
| | | | | | | | | | | | | | | | | | | GCC is unable to emit the SEH metadata about the stack aligning that is required to execute AVX aligned instructions (VMOVDQA, VMOVAPS, etc.), so it just doesn't align the stack. That causes crashes on a 50/50 chance every time the compiler attempts to address a stack-aligned variable. In a debug-mode build, because it always loads & saves everything on the stack, the chance of a crash happening is a near certainty. So we hack around it by going behind the compiler's back and instructing the assembler to emit the unaligned counterparts of the instructions every time the compiler wished to emit the aligned one. There's no performance penalty: if the variable is actually aligned, the unaligned instruction executes in the exact same time. Change-Id: Ib42b3adc93bf4d43bd55fffd16c29cac0da18972 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* qsimd.h: move the rest of the __xxx__ definitions that MSVC lacksThiago Macieira2022-01-202-32/+15
| | | | | | | | | | The Intel compiler is now based on Clang, so it always defines the macros like Clang and GCC do, so we don't need to worry about it any more. We only need to define the macros that MSVC lacks. Change-Id: Ib42b3adc93bf4d43bd55fffd16c10f0f6fef43ef Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* QtCore: replace qSwap with std::swap/member-swap where possibleMarc Mutz2022-01-201-0/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | qSwap() is a monster that looks for ADL overloads of swap() and also detects the noexcept of the wrapped swap() function, so it should only be used when the argument type is unknown. In the vast majority of cases, the type is known to be efficiently std::swap()able or to have a member-swap. Call either of these. For the common case of pointer types, circumvent the expensive trait checks on std::swap() by providing a hand-rolled qt_ptr_swap() template, the advantage being that it can be unconditionally noexcept, removing all type traits instantiations. Don't document it, otherwise we'd be unable to pick it to 6.2. Effects on Clang -ftime-trace of a PCH'ed libQt6Gui.so build: before: **** Template sets that took longest to instantiate: [...] 27766 ms: qSwap<$> (9073 times, avg 3 ms) [...] 2806 ms: std::swap<$> (1229 times, avg 2 ms) (30572ms) after: **** Template sets that took longest to instantiate: [...] 5047 ms: qSwap<$> (641 times, avg 7 ms) [...] 3371 ms: std::swap<$> (1376 times, avg 2 ms) [qt_ptr_swap<$> does not appear in the top 400, so < 905ms] (< 9323ms) As a drive-by, remove superfluous inline keywords and template ornaments. Task-number: QTBUG-97601 Pick-to: 6.3 6.2 Change-Id: I88f9b4e3cbece268c4a1238b6d50e5712a1bab5a Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* convertDoubleTo: add an x86-64 intrinsics versionThiago Macieira2022-01-191-5/+79
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The UB that the C and C++ standards talk about do not apply if we use intrinsics. We can rely on the processors' architectural behavior instead. There are two ways to detect a conversion that cannot be represented in the result. One would be to check if the #IE bit got set in the MXCSR, but in order to do that we'd need two issue an STMXCSR+LDMCXSR pair to clear the bit first and then another STMXCSR at the end to see if it got set. Those instructions are 4 uops long and necessarily target memory, so that's a bit slow. This commit implements the second way, which is to check if the result of the conversion is the "undefined" value. Unfortunately, that value is a valid, precise value that double can hold for all data types except unsigned 64-bit, so we need to recheck if that was the actual value stored in the original double. This implementation targets 64-bit exclusively because that avoids having to deal with the 64-bit intrinsics not even being defined in 32- bit code (converting a double to 64-bit integer in 32-bit is messy). The unsigned implementation is only implemented with AVX512F because of the unsigned conversion instructions that were introduced then. Change-Id: I89446ea06b5742efb194fffd16bb9f04b2014bab Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Doc: Use \inmodule for all classes and headersTopi Reinio2022-01-172-0/+2
| | | | | | | | | | | | | | | QDoc made some assumptions about the module a class/header belongs to, based on the source file path. This feature is rather error-prone and unnecessarily complex and will be removed from QDoc. Define modules explicitly to avoid documentation warnings when this removal happens. Pick-to: 6.2 6.3 Change-Id: I7947d197db5ac36c12e816caa19bb2f74eda8849 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io>
* convertDoubleTo: invert the condition so we catch NaNs earlyThiago Macieira2022-01-141-1/+1
| | | | | | | This is floating point, so De Morgan doesn't always apply. Change-Id: I89446ea06b5742efb194fffd16bb9e36025cb387 Reviewed-by: Marc Mutz <marc.mutz@qt.io>
* convertDoubleTo: move the precision upgrade test upThiago Macieira2022-01-141-4/+13
| | | | | | | | | | Hopefully, the compiler will realize that the suprema calculated below are actually bigger than these limits and make the appropriate dead code eliminations. Change-Id: I89446ea06b5742efb194fffd16bb99f78b26eb0e Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* QOperatingSystemVersion: Make implementation consistent on all platformsYuhang Zhao2022-01-123-22/+13
| | | | | | | | | | | | | Only Windows is using lambda function, change to static member function to be consistent with other platforms. QOperatingSystemVersionBase::current()'s implementation is exactly the same on all platforms, so move it to the common source file instead of implementing it three times on each platform. Change-Id: I4099235b3b041a9a374e21d537649047ee03e62b Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QOperatingSystemVersion_win: Allow override as Windows 11Yuhang Zhao2022-01-071-2/+7
| | | | | | | And added some later Windows Server versions. Change-Id: I81415f1044d11458a4b4d19b01ce90e357f9d111 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QGlobalStatic: invert the order of destruction and setting the guardThiago Macieira2022-01-051-2/+2
| | | | | | | | | | | | | | | | This is how the old implementation did it: the Type member was a member of Holder, but the guard was set to Destroyed in the HolderBase destructor, which ran after. I find the way I implemented in commit81a31beeb25eaf14d5c5f42fe26aa49d6ef29bf8 to be more natural, but it caused regressions at runtime for code that attempted to reenter the global static on destruction. Not unit-tested because I don't know if we want to keep this forever. Pick-to: 6.3 Fixes: QTBUG-99192 Change-Id: Ib42b3adc93bf4d43bd55fffd16c09d7f835d121e Reviewed-by: Marc Mutz <marc.mutz@qt.io>
* QRandom: remove dead pre-C++11 codeMarc Mutz2022-01-051-6/+0
| | | | | | | | | | | | All compilers support C++11 unrestricted unions in Qt 6. Gets rid of another instance of to-be-deprecated-in-C++-23 std::aligned_storage. Pick-to: 6.3 Task-number: QTBUG-99122 Change-Id: I5e6dc025893c79d0c516fc2d3801ec071615b9cc Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Extract Header qforeach.h from qglobal.hMarc Mutz2021-12-303-84/+140
| | | | | | Task-number: QTBUG-99313 Change-Id: Ie89314ca7022e88c1fea957880c5aa4a41640744 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Doc: QSysInfo::productType: remove the "will be" note about Qt 6Thiago Macieira2021-12-231-4/+3
| | | | | | | Fixes: QTBUG-99413 Pick-to: 6.2 6.3 Change-Id: Ib42b3adc93bf4d43bd55fffd16c360797871011b Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* wasm: prevent thread cross-talk when loggingMorten Johan Sørvig2021-12-211-0/+7
| | | | | | | | | | | Emscriptens implementation of fprintf does not provide mutal exclusion when called from multiple threads, for the emsdk versions Qt 5.15, Qt 6.2, and current dev is using. Pick-to: 5.15 6.2 Change-Id: Ied92730b735b11e4e5e85442de48fc25cbad0611 Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
* CMake: don't treat Q_CORE_EXPORT specialMarc Mutz2021-12-201-7/+4
| | | | | | | | | | | | Let CMake create a qtcoreexports.h just like for every other Qt library, include it in a fitting place in qglobal.h. Currently, that's in the middle of the file, but that will be cleaned up in subsequent commits. Task-number: QTBUG-99313 Change-Id: I3ea9f4772b0ad63c7e8431689146cac3336c5ccf Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
* Q_{APPLICATION,GLOBAL}_STATIC: use variadic macrosThiago Macieira2021-12-172-5/+16
| | | | | | | | | | | | | | | | | We can't remove Q_GLOBAL_STATIC_WITH_ARGS, for compatibility reasons. It's also the only way to pass uniform initialization (i.e., initialize the value as value{with_braces}), though I don't think this is used almost anywhere due to the fact that you couldn't pass more than one argument. But Q_APPLICATION_STATIC is new in 6.3, so we have time to change it. [ChangeLog][QtCore][QGlobalStatic] The Q_GLOBAL_STATIC macro is now variadic. Any extra arguments are used as constructor arguments, obliterating the need to use Q_GLOBAL_STATIC_WITH_ARGS(). Pick-to: 6.3 Change-Id: Ib42b3adc93bf4d43bd55fffd16be3656a512fe53 Reviewed-by: Marc Mutz <marc.mutz@qt.io>
* QGlobalStatic: don't use a std::aligned_union if we can be a unionThiago Macieira2021-12-162-12/+14
| | | | | | | | | Simplifies further the code with C++11 unrestricted unions. Pick-to: 6.3 Task-number: QTBUG-99122 Change-Id: Ib42b3adc93bf4d43bd55fffd16c0b6677441bf55 Reviewed-by: Marc Mutz <marc.mutz@qt.io>
* QIODevice: use QVLA to hold the ring buffers, not QListMarc Mutz2021-12-151-1/+1
| | | | | | | | | | | | | | | The only users of more than one read- or write channel are the SCTP code and QProcess. SCTP being pretty rare, optimize for the common case of at most two QRingBuffers for reading (QProcess) and one for writing. Even with more channels, QVLA shouldn't be slower than QList - on the contrary. Need to adjust tst_toolsupport and TypeInformationVersion, as QFilePrivate::fileName has changed. Pick-to: 6.3 Change-Id: I3baf982ba1f4dc51463be8730e414f6164072d8b Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* QLogging: fix potential missing NUL-terminator when calling OutputDebugStringMarc Mutz2021-12-151-2/+2
| | | | | | | | | | | | | | | | | | | The string returned from QStringView::utf16() is, in general, not NUL-terminated, as OutputDebugString() requires. Though we only ever call win_outputDebugString_helper() with an actual QString, it's not 100% clear said QString doesn't originate from, say, a QStringLiteral, in which case QString::utf16() would have to (an does) detach() to ensure the NUL-termination. So, take by const QString&, but use QStringView::mid() to avoid copying the substring content twice. Amends a049325cc708b483ed1aadc6589419f4d74b19f3. Pick-to: 6.3 6.2 5.15 Change-Id: Ie42a6000c75c6a55d629621d89e0cf498b174d29 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* Rewrite Q_{GLOBAL,APPLICATION}_STATIC with C++17 goodiesThiago Macieira2021-12-122-117/+104
| | | | | | | | | | | | Especially static inline variables. This greatly reduces the amount of code that existed in macros, moving them to templates. Additionally, this removes one level of indirection from Q_APPLICATION_STATIC by removing the std::unique_ptr. We now directly manage the object's storage. Change-Id: I2cffe62afda945079b63fffd16bcc825cc04334e Reviewed-by: Marc Mutz <marc.mutz@qt.io>
* Re-enable parsing Qt code with LLVM (Qt for Python)Friedemann Kleint2021-12-091-1/+1
| | | | | | | | | | Exclude the check introduced by 0dc6cc055174a0556f2e41ca269013b3a7056c86 for clang compilers since there seems to be no equivalent option -permissive- for the MSVC emulation. Change-Id: I0468d8e2f2c988e604be6960f1b1f4760ea0c400 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* Doc: Reword, fix typos and some formattingIvan Tkachenko2021-12-081-6/+7
| | | | | Change-Id: I0929f7653cb07665842d0aa7bf18dc80471febdc Reviewed-by: Kai Koehne <kai.koehne@qt.io>
* QLogging: mark all warning() and critical() functions as coldMarc Mutz2021-12-071-0/+6
| | | | | | | | | Previously, only the printf-style overloads were marked as such. Saves ~7KB in QtCore text size on Linux AMD64 GCC 11 C++ 20 builds. Change-Id: I4ed480e48060b87968f3d15bb5a84bdbcf70a647 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Fix tst_qfloat16 runtime failure for INTEGRITYTatiana Borisova2021-12-061-1/+1
| | | | | | | | | | - GHS compiler is not fully compliant with iec559. Therefore we need to update is_iec559 checking for GHS case. Pick-to: 6.2 Change-Id: Ia094509d26bf5f0109f2937547a056267019cffb Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Janne Koskinen <janne.p.koskinen@qt.io>
* qBound: add an assert on !(upper < lower)Giuseppe D'Angelo2021-12-061-53/+67
| | | | | | | | | | | | | | It's a precondition and we might just as well check it, given that people have actually got the order of the arguments wrong (cf. QTBUG-69330). Unfortunately, Q_ASSERT is defined below qBound in qglobal.h, so I had to reshuffle some code around. Change-Id: I82e52bcb863ff8c96594817e0cd5d7d2abe2e57e Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* Remove unused Q_DECLARE_SHARED_NOT_MOVABLE_UNTIL_QT6Marc Mutz2021-12-031-8/+0
| | | | | | | There are no users left in the tree. Change-Id: I336f4e15c0ec1f5933c1fcfa661bad85bd38ed35 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Reduce scope of a hack using volatile in favor of viewAt()Edward Welbourne2021-12-021-11/+7
| | | | | | | | | | | We can now get qt_configure_strs to tell us the size of the string, as well as its start, bypassing the strlen()-calling branch of fromLocal8Bit() that caused the need for a hack using a volatile variable. However, QT_CONFIGURE_SETTINGS_PATH still needs the volatile hack. Change-Id: I0181abf512123e6355acdd506d6845c3fb75c0e3 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QOperatingSystemVersion: cache the retrieved versionYuhang Zhao2021-11-233-2/+15
| | | | | | | | It won't change during runtime, so make it a static variable to avoid fetching the information repeatedly. Change-Id: I430ceba218f9f3515558736238d1d5a74cf59419 Reviewed-by: Marc Mutz <marc.mutz@qt.io>
* Short live q20::ssize()!Marc Mutz2021-11-201-0/+80
| | | | | | | | | Extract the definition of q20::ssize() from tst_qanystringview.cpp, where it had to be placed for its backport to 6.2. Change-Id: I3f758c98a4b1efd453f4fc044b8d3f1a89de62d1 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
* Change qt.conf key Qml2Imports to QmlImportsJoerg Bornemann2021-11-192-19/+32
| | | | | | | | | | | | | [ChangeLog][qt.conf] The key Paths/Qml2Imports has been renamed to Paths/QmlImports. For backwards-compatibility, Paths/Qml2Imports is still accepted and acts as default value for when Paths/QmlImports is not present. Fixes: QTBUG-98335 Change-Id: If7ffedd281eb8a87e8ab1a2b69a823e615c33541 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> Reviewed-by: Alexey Edelev <alexey.edelev@qt.io> Reviewed-by: Kai Koehne <kai.koehne@qt.io>
* Prefer QBAV over raw char * form of qt_configure_strsEdward Welbourne2021-11-191-2/+2
| | | | | | | | | | | Passing the QByteArrayView to QString::fromLocal8Bit() ensures we tell it the size and saves a strlen(). Quite apart from avoiding some misguided grumbles from compilers, this save searching for a '\0' when we already know where it is. Change-Id: I2e3f2edfb4d3bdf488374570567d1dd30641ebc3 Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QOperatingSystemVersion: Add Windows11Mårten Nordheim2021-11-192-0/+7
| | | | | | Change-Id: Ieb7674bbbbc78689f1e2a1e5a06dfd4d0ce25ac1 Reviewed-by: Yuhang Zhao <2546789017@qq.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Add operating system version for macOS 12 "Monterey"Volker Hilsheimer2021-11-182-0/+10
| | | | | | | | | With pre-11 SDKs, macOS reports version 10.16, which already matches BigSur, so we only match Monterey if version 12 is reported. Change-Id: I37fee43756310370444981212750cdfe7fad64b8 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* Introduce Q_APPLICATION_STATICMike Achtelik2021-11-181-15/+23
| | | | | | | | | | | | | | QObjects must be deleted if the QCoreApplication is being destroyed. This was previously done by implementing custom code in qtbase and other modules. So unify it and introduce a Q_APPLICATION_STATIC, based on the Q_GLOBAL_STATIC, which centralises the logic. Since we still have a few remaining living QObjects, this comes in handy to fix those as well. Task-number: QTBUG-84234 Change-Id: I3040a2280ff56291f2b1c39948c06a23597865c4 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Add missing QT_TRID_N_NOOP definitionLucie Gérard2021-11-182-0/+21
| | | | | | | | | | | | | Amends c74bd2b93, properly following up on qttools/bc47b5190. [ChangeLog][QtCore] Added missing QT_TRID_N_NOOP() macro. Lupdate actually recognizes it since Qt 5.12. Fixes: QTBUG-98277 Fixes: QTBUG-3945 Change-Id: I0ea15ceb49b2ead5c8bb40d2a55a0ae8577e8850 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de> Reviewed-by: Kai Koehne <kai.koehne@qt.io>
* QOperatingSystemVersion: Add Win10 sub-versionsYuhang Zhao2021-11-182-0/+50
| | | | | Change-Id: Icce32a17f285f0a0416ad8a7838a7424cda2bc2b Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Do not include qloggingcategory.h in public headersKai Köhne2021-11-163-35/+102
| | | | | | | | | | | | | | | Reduce overhead for including qguiapplication.h by splitting up qnativeinterface.h into a public and a private part. [ChangeLog][Potentially Source-Incompatible Changes] The qguiapplication.h header no longer implicitly includes qloggingcategory.h. If your code depends on the transitive include, explicitly include <QLoggingCategory> where needed. Pick-to: 6.2 Task-number: QTBUG-97601 Change-Id: Ic02327a1c3092e21730160af5c59a9d58dc1239c Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* Document QLibraryInfo::Qml2ImportsPath as deprecatedUlf Hermann2021-11-151-1/+5
| | | | | | | | | | | Also, add a TODO for migrating to QmlImportsPath in qt.conf. Task-number: QTBUG-98335 Change-Id: I3c321c99c6286ba64eef643876f5b56d5a8ca695 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Andrei Golubev <andrei.golubev@qt.io> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Teach QOperatingSystemVersion to handle new OS entries in patch releasesMårten Nordheim2021-11-124-75/+197
| | | | | | | | | | | | | | Adding new entries to QOperatingSystemVersion in patch releases was previously breaking our BC guarantees because the entries are exported, thus users cannot freely switch between different patch-releases without a recompile if they adopted the new entries. Move the data itself to a base class so that the entries can be constructed inline. Task-number: QTBUG-97808 Change-Id: Ic44f07488af8a04a3bedc10bebb740c4d68f43f3 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Fix not respected qt.conf settingsMichal Klocek2021-11-111-6/+13
| | | | | | | | | | | | | | | | Change 6fb569af951 introduces reloadOnQAppAvailable for QLibrarySettings, however it is missing a reload check for hasPaths, this breaks essentially reading custom qt.conf Add missing check. Fixes: QTBUG-97382 Fixes: QTBUG-97383 Fixes: QTBUG-97947 Pick-to: 6.2 Change-Id: I28379d9dd38357c290edd44b93d3bea489b9cefe Reviewed-by: Alexey Edelev <alexey.edelev@qt.io> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Bump WINVER, _WIN32_WINNT and _WIN32_IE to _WIN32_WINNT_WIN10 (0x0A00)Yuhang Zhao2021-11-101-18/+11
| | | | | | | | | | | And bump NTDDI_VERSION to 0x0A00000B (NTDDI_WIN10_CO) at the same time, to unblock the developers from accessing the latest Windows APIs. Pick-to: 6.2 Change-Id: Ifbc28c8f8b073866871685c020301f5f20dc9591 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* qoperatingsystemversion_win: fix thread raceMårten Nordheim2021-11-081-3/+4
| | | | | | | | | | | | If two threads call the function at the same time before the static is initialized one of them may end up with a half-written object. Amends 3fe89eec61e2c819bb54a5d3dfe4bc29dba49ff3 Pick-to: 6.2 Change-Id: Ie08970f9ee283fd75292a8b44a1fca89de4b04eb Reviewed-by: Yuhang Zhao <2546789017@qq.com> Reviewed-by: Marc Mutz <marc.mutz@qt.io>
* Revert "QOperatingSystemVersion: Add support for Win10 sub-versions"Thiago Macieira2021-11-062-63/+0
| | | | | | | | | | This reverts commit 9568362bfe9bdbd6a67ab4bbf9fd9504d3868529 because the implementation does not use the agreed-upon solution of static constexpr (thus, inline) variables. This change needs to be re-issued after that suppotr lands. Change-Id: Ib42f3828dcbed66603adc2a699cdac2a8469b263 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QOperatingSystemVersion: Add support for Win10 sub-versionsYuhang Zhao2021-11-042-0/+63
| | | | | | | | | | | | | | Windows 10 has many sub-versions such as 1809/1903/1909/etc, currently Qt6 can only detect if the application is running on Win10 or not, which I think is not accurate enough. Different Win10 version may introduce different features and bugs, the developers will have to know the exact version. Only give a general Win10 as an answer is not ideal. I think Qt should add variables for these sub-versions. Change-Id: I772d25a528ee2f8a4afba314d701142a06c718f9 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* qlibrary.cpp: avoid the +12 constant in too many placesThiago Macieira2021-11-031-1/+1
| | | | | | Pick-to: 6.2 Change-Id: I2bbf422288924c198645fffd16a9a5f99bf9499e Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* qlibraryinfo.cpp: use qOffsetStringArray for qtConfEntriesThiago Macieira2021-11-031-37/+35
| | | | | | | | | | Beats a manual array with too wide strings. I thought even to simply replace this with a switch (loc)... it's not like this is performance-critical code, given it uses QString. Change-Id: I2bbf422288924c198645fffd16a977778ff8d52d Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* qoperatingsystemversion_win: cache the retrieved versionYuhang Zhao2021-11-021-6/+8
| | | | | | | | | | Make it a static variable to avoid acquiring the system version multiple times. The system version won't change at runtime after all. Pick-to: 6.2 Change-Id: Ic381e5dd7b482fedc9c01242482559ffca9d3f2b Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Remove pre-Win10 code paths in QtBaseYuhang Zhao2021-11-021-5/+2
| | | | | | | | | | | | | | Mostly a removal of dynamically loaded API. They should all exist on Windows 10 1809 (Qt6's minimum supported version). accessibility parts left untouched to make sure MinGW still compiles. Task-number: QTBUG-84432 Pick-to: 6.2 Change-Id: I7a091fc967bd6b9d18ac2de39db16e3b4b9a76ea Reviewed-by: André de la Rocha <andre.rocha@qt.io>
* qconfig.cpp: use qOffsetStringArrayThiago Macieira2021-10-292-19/+16
| | | | | | | | | | It's been there for ages, we may as well use it and remove unnecessary complexity from CMake. Pick-to: 6.2 Change-Id: I2bbf422288924c198645fffd16a9742567a7e4af Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>