summaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
...
* xcb: stablilize xkb state when keymap updatedLiang Qi2021-11-263-5/+22
| | | | | | | | | | | | | | | | QXcbKeyboard only deals with core_device_id. With the reporter's test case: using xdotool to send a string, the deviceID is not changed, then we assume xkb_state_new() is more stable(or correct) than xkb_x11_state_new_from_device() in this case. See also https://www.x.org/releases/current/doc/man/man3/xcb_xkb_new_keyboard_notify_event_t.3.xhtml . Fixes: QTBUG-95933 Pick-to: 6.2 5.15 Change-Id: Ic595e1f1424fbc6814871a85ac159907f1aeb12a Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Zhang Hao <zhanghao@uniontech.com> Reviewed-by: Liang Qi <liang.qi@qt.io>
* wasm: Move streamFile() to qstdwebMorten Johan Sørvig2021-11-263-39/+48
| | | | | | | | | This function is useful also outside of local file access, for example when reading clipboard (file) content. Change-Id: I132546deb6df2969467051c348c05d9331d2cfd2 Reviewed-by: David Skoland <david.skoland@qt.io> Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
* QTest: de-inline QVERIFY_THROWS_EXCEPTION message formattingMarc Mutz2021-11-262-5/+38
| | | | | | | | | | | | Extract Method QTest::qCaught() to take the string handling out of the header. This should help a bit in speeding up compilation of large unit test files (provided they use QVERIFY_THROWS_EXCEPTION), although I have no data to support that. Since we changed the error message, update the selftest accordingly. Change-Id: Id4a3c8c34d5df8d0c7a861106d269097f4a6de5c Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* Fix and complete style sheet support for QToolButtonVolker Hilsheimer2021-11-261-39/+51
| | | | | | | | | | | | | | | | | | | Amends 2b2e7b2ac50e5b4f6e1888e594f6e32338dd2a80, which rewrote the rendering to remove the conflation of menu arrows and arrow icons, but introduced double rendering of the arrow icons if only the border was styled. Add a baseline test for style sheets, with a test function for QToolButton configured in various ways and styled with different style sheets. The new test case includes a Qt 5 build system so that we can compare Qt 5.15 with Qt 6. Fixes: QTBUG-98286 Pick-to: 6.2 6.2.2 Change-Id: I09cdc829c1a7e7913df4c3768dbe44b6dba4778b Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io> Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
* d3d11rhi: remove leftover of pre-win10 codeYuhang Zhao2021-11-261-3/+1
| | | | | | | | | Amends commit 1e085b9e15abeb45bbbf7995818fcd9c94bfefe1 Task-number: QTBUG-84432 Pick-to: 6.2 Change-Id: Id48fb6c2a9c7d24f1525975c6c154dbc323bbc25 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* Add QTest::failOnWarningMitch Curtis2021-11-265-0/+123
| | | | | | | | | | | | | | This solves the long-standing problem of not being able to easily fail a test when a certain warning is output. [ChangeLog][QtTest] Added QTest::failOnWarning. When called in a test function, any warning that matches the given pattern will cause a test failure. The test will continue execution when a failure is added. All patterns are cleared at the end of each test function. Fixes: QTBUG-70029 Change-Id: I5763f8d4acf1cee8178be43a503619fbfb0f4f36 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* Long live QVERIFY_THROWS_EXCEPTION!Marc Mutz2021-11-262-6/+32
| | | | | | | | | | | | | Use variable args macros to swallow any extra commas in the expression. To use this, the type of the exception has to be first. Use Eddy's suggestion for a new name to avoid breaking the old macro. [ChangeLog][QtTest] Added QVERIFY_THROWS_EXCEPTION, replacing QVERIFY_EXCEPTION_THROWN, which has therefore been deprecated. Change-Id: I16825c35bae0631c5fad5a9a3ace4d6edc067f83 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* QTemporaryDir: Set directory permissions at the time of creationIevgenii Meshcheriakov2021-11-261-11/+3
| | | | | | | | | | | Use new QDir::mkdir() method to set directory permissions at the time of its creation on systems that support this feature. This removes the time window when the created directory is potentially accessible to everybody. Task-number: QTBUG-79750 Change-Id: I82afee7f0708bfdcc9b3b3978af9a2aef1b8672d Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QDir: Add support for setting directory permissions to mkdir()Ievgenii Meshcheriakov2021-11-2610-45/+380
| | | | | | | | | | | | | | This patch adds an overload of the QDir::mkdir() method that accepts permissions. This allows setting of the directory permissions at the time of its creation. [ChangeLog][QtCore][QDir] Added QDir::mdkir() overload that accepts permissions argument. Task-number: QTBUG-79750 Change-Id: Ic9db723b94ff0d2da6e0b819ac2e5d1f9a4e2049 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* Q(Multi)Map: prevent dangling key/value after detach()Giuseppe D'Angelo2021-11-261-3/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Q(Multi)Map mutating functions that take reference to a key and/or a value (e.g. insert(), take(), etc.) must make sure that those references are still valid -- that is, that the referred objects are still alive -- after the detach() call done inside those functions. In fact, if the key/value are references into *this, one must take extra steps in order to preserve them across the detach(). Consider the scenario where one has two shallow copies of QMap, each accessed by a different thread, and each thread calls a mutating function on its copy, using a reference into the map (e.g. map.take(map.firstKey())). Let's call the shared payload of this QMap SP, with its refcount of 2; it's important to note that the argument (call it A) passed to the mutating function belongs to SP. Each thread may then find the reference count to be different than 1 and therefore do a detach() from inside the mutating function. Then this could happen: Thread 1: Thread 2: detach() detach() SP refcount != 1 => true SP refcount != 1 => true deep copy from SP deep copy from SP ref() the new copy ref() the new copy SP.deref() => 1 => don't dealloc SP set the new copy as payload SP.deref() => 0 => dealloc SP set the new copy as payload use A to access the new copy use A to access the new copy The order of ref()/deref() SP and the new copy in each thread doesn't really matter here. What really matters is that SP has been destroyed and that means A is a danging reference. Fix this by keeping SP alive in the mutating functions before doing a detach(). This can simply be realized by taking a local copy of the map from within such functions. remove() doesn't suffer from this because its implementation doesn't do a bare detach() but something slightly smarter. Change-Id: Iad974a1ad1bd5ee5d1e9378ae90947bef737b6bb Pick-to: 6.2 Reviewed-by: Marc Mutz <marc.mutz@qt.io> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* Add some missing entries to QTest::qExec()'s \sa lineEdward Welbourne2021-11-261-1/+1
| | | | | Change-Id: I45300d5f9df519c5edb68d24232830bd0850915a Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* Android: Set sem_wait m_terminateSemaphore behind an atomic flagRami Potinkara2021-11-261-1/+7
| | | | | | | | | | | Prevents QML app using QtActivity never calling AndroidJniMain::startQt..'s to jam as ANR Pick-to: 6.2 5.15 Task-number: QTBUG-97115 Change-Id: Ibfe8579dbb701068f4896b6d826ff487094bdf56 Reviewed-by: Marc Mutz <marc.mutz@qt.io> Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
* QAndroidActivityResultReceiver: make uniqueActivityRequestCode() lock- and ↵Marc Mutz2021-11-251-5/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | UB-free The old code attempted to detect the overflow of the requestCode variable, but because it didn't do anything about it except warn, it still ran into the overflow, and, since the variable is signed, into UB. That means that a clever compiler will just eliminate the warning as dead code because it can backtrack and see that the condition guarding it is never true, because otherwise UB happens. Fix that problem by using a uint counter (unsigned overflow is defined to wrap) and only convert to int after the check. Also fix two inefficiencies with the old code: 1. We don't need a mutex just to up a counter in a thread-safe way. Upping a shared counter is the prototypical use-case for relaxed atomics, so use that. That also solves the problem of the non-POD static object at function scope (QMutex) that forced compilers to emit thread-safe static initialization code. 2. We had a static variable whose initial value isn't 0, which means it can't be in stored in the BSS, but only in the DATA segment. Do the trivial transformation of subtracting the offset so the variable starts at 0. The offset can be added afterwards. Pick-to: 6.2 Change-Id: I3560df21d6b4e4201cb6772237780cc8b400631d Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QVERIFY_EXCEPTION_THROWN: re-throw unknown exceptionsMarc Mutz2021-11-252-10/+20
| | | | | | | | | | | | | | | | | | | | | | | | | Swallowing unknown exceptions is dangerous business, as the exception might be a pthread cancellation token, the swallowing of which would terminate the program. Instead of returning from the catch-all-clause, therefore, re-throw the unknown exception. Fix tst_verifyexceptionthrown failure cases that use non-std::exception-derived true negative exceptions to not let the exception escape from the test function. As a drive-by, pretty up the macro's docs. [ChangeLog][QtTest][QVERIFY_EXCEPTION_THROWN] Now re-throws unknown exceptions (= not derived from std::exception) (was: swallowed them and returned from the test function), in order to play nice with pthread cancellation. Pick-to: 6.2 5.15 Change-Id: Ic036d4a9ed4b7683fa67e27af8bcbae0eefdd0da Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* Doc: Replace use of \oldcode-\newcodeLuca Di Sera2021-11-253-10/+40
| | | | | | | | | | | The command-pair was recently deprecated. The replacement code should produce an output that is equal to the previous one. Task-number: QTBUG-98499 Change-Id: If26e0d85a174ebc3858b638c34d7f43637eab46d Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* QHash: fix thread race around references and detachingMårten Nordheim2021-11-251-31/+80
| | | | | | | | | | | If we detach from a shared hash while holding a reference to a key from said shared hash then there is no guarantee for how long the reference is valid (given a multi-thread environment). Pick-to: 6.2 Change-Id: Ifb610753d24faca63e2c0eb8836c78d55a229001 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Marc Mutz <marc.mutz@qt.io>
* QAuthenticator: Filter out algorithms we don't supportMårten Nordheim2021-11-251-0/+19
| | | | | | | | | | | Which is anything other than MD5 Pick-to: 6.2 5.15 Fixes: QTBUG-98280 Change-Id: Ifbf143f233ee5602fed1594e3316e6b2adec1461 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* Windows QPA: Further cleanup of pre-Win10 codeYuhang Zhao2021-11-2414-383/+109
| | | | | | | | | | | | | | | | | Mostly a removal of dynamically loaded Win32 APIs. Since Qt 6's minimum supported platform is Win10 1809 (10.0.17763, code name RS5), all these functions will be available and no need to resolve them at run-time. Things not remove: WinTab functions in "qwindowstabletsupport.cpp". Not my familiar area, so not touch it. Pick-to: 6.2 Task-number: QTBUG-84432 Change-Id: I7ad6c3bc8376f6c0e3ac90f34e22f7628efeb694 Reviewed-by: André de la Rocha <andre.rocha@qt.io> Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* QObject: don't #include qproperty.hMarc Mutz2021-11-231-2/+2
| | | | | | | | | | | | | | | | | | | | | The qobject.h header needs QBindingStorage in-size and QBindable in-name-only. The former was moved to its own header in a previous commit, which we include now, while the latter can just be forward-declared. This allows dropping the qproperty.h include from qobject.h. [ChangeLog][Potentially Source-Incompatible Changes] The qobject.h header no longer implicitly includes qproperty.h. If your code depends on the transitive include, explicitly include <QProperty> where needed. Task-number: QTBUG-97601 Pick-to: 6.2 Change-Id: I8d6320f5978e20dfc394d2b1e49f626b99529c37 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QTest: mark qFail() as coldMarc Mutz2021-11-231-0/+1
| | | | | | | | | | Unit tests should not fail, so a call to qFail() is by definition exceptional. Therefore, mark the function as cold. It probably doesn't matter in the grand scheme of things, but it also doesn't cost much. Change-Id: I0cafcfa65ff285812155d0687deded8d26cf4efd Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* Move macdeployqt and windeployqt from qttools to qtbaseJoerg Bornemann2021-11-2315-0/+6073
| | | | | | | | Having all *deployqt tools in qtbase will allow us to couple deployment support more tightly with the build system. Change-Id: I299efdacfa6b66a303bb3996ff3ff84e723210a5 Reviewed-by: Kai Koehne <kai.koehne@qt.io>
* 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>
* QCocoaMenuBar: set the app's 'Window' menuTimur Pocheptsov2021-11-233-0/+31
| | | | | | | | | | To enable a list of windows the app has open in the Dock's menu. Not to surprise existing applications with a 'Window' menu where they did not have it before, make the item hidden. Fixes: QTBUG-59433 Change-Id: I1ac3d3de69f4313f39c4631dc4b68bf6e096532a Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* QtBase: replace windows.h with qt_windows.hYuhang Zhao2021-11-232-2/+2
| | | | | | | | | | We have some special handling in qt_windows.h, use it instead of the original windows.h Change-Id: I12fa45b09d3f2aad355573dce45861d7d28e1d77 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* Restore src/tools/moc/util/generate_keywords.proMarc Mutz2021-11-231-0/+5
| | | | | | | | | The file was inadvertently removed in ad2da2d27a590333fc89a56fc58700a09c3017b3. Pick-to: 6.2 Change-Id: Iaaf74d7ae382b0c9487fb25a58632dfc5be6538d Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* qapplicationstatic.h: fix syncqt warningMarc Mutz2021-11-231-1/+1
| | | | | | | | | | Warning was: "QtCore: WARNING: src/corelib/kernel/qapplicationstatic.h includes QMutex when it should include QtCore/QMutex" Comply. Change-Id: Ifc74b4f8052b7e95f86cab9a01a7e91bcbc3022d Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* QVLA: Self-Encapsulate FieldsMarc Mutz2021-11-221-97/+97
| | | | | | | | | | | | | | | | Use member functions to access some (combinations of) fields in preparation of moving said fields to base classes: s + ptr → end() s → size() ptr → data() (or begin(), depending on context) a → capacity() Fixed a const-incorrectness issue detected by the change. Task-number: QTBUG-84785 Change-Id: I2218d57559208c9d77b8860d419979e92f140e13 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QImageReader: check allocation limit for minimum 32 bppEirik Aavitsland2021-11-222-2/+13
| | | | | | | | | | | | | | | | | Also, as a driveby, add an environment variable so the limit can be changed at runtime. [ChangeLog][QtGui][QImageReader] When checking allocation limit during image reading, the memory requirements are now calculated for a minimum of 32 bits per pixel, since Qt will typically convert an image to that depth when it is used in GUI. This means that the effective allocation limit is significantly smaller when reading 1 bpp and 8 bpp images. Pick-to: 6.2 6.2.2 Change-Id: If1b204d413973b0975eea531e29c260fdcec931d Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Add support for combining multiple QFuturesSona Kurazyan2021-11-204-0/+508
| | | | | | | | | | | [ChangeLog][QtCore] Added QtFuture::whenAll() and QtFuture::whenAny() functions, returning a QFuture that becomes ready when all or any of the supplied futures complete. Task-number: QTBUG-86714 Change-Id: I2bb7dbb4cdc4f79a7a4fd494142df6a0f93a2b39 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* Q{CoffPe,Elf,MachO}Parser: check that the magic string is presentThiago Macieira2021-11-193-8/+31
| | | | | | | | | | Commit 2549a88ba2a48fa2bedce97dd71a2974c6f8840a changed the ELF and Mach-O parsers to return an offset to the actual data header, not the magic string, which we stopped searching for anyway. This commit brings such a validity check back and adds it to the new COFF PE parser. Change-Id: Iccb47e5527544b6fbd75fffd16b8b2252a76f179 Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* QPluginLoader: add COFF PE file parserThiago Macieira2021-11-194-0/+490
| | | | | | | | Fixes: QTBUG-67461 Docs: https://docs.microsoft.com/en-us/windows/win32/debug/pe-format Change-Id: I5e52dc5b093c43a3b678fffd16b77bf9a8f2b17e Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* CMake: reorganize the QT_FEATURE_library portion of CMakeLists.txtThiago Macieira2021-11-192-11/+9
| | | | | | | | No need to attempt to compile both qelfparser and qmachoparser in all systems. Change-Id: Iccb47e5527544b6fbd75fffd16b7ee5a1555a7a8 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* QString::fromUtf16: use qustrlenThiago Macieira2021-11-191-5/+2
| | | | | | | | We have it. Pick-to: 6.2 Change-Id: Iccb47e5527544b6fbd75fffd16b901fe4d2920a7 Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* Re-apply "QReadWriteLock: replace (QWaitCondition, QMutex) with ↵Marc Mutz2021-11-202-22/+25
| | | | | | | | | | | | | | std::(condition_variable, mutex)" This reverts commit 1283ee324578e4cf5cc210d8d3c89647d6c56ec3. We now have wrappers around std::mutex and std::condition_variable that fall back to QMutex and QWaitCondition on the broken Integrity toolchain. Use them. Change-Id: I881aa931167b845b489713048b57ccc5f79d4237 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* Short live q20::ssize()!Marc Mutz2021-11-202-0/+81
| | | | | | | | | 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>
* QAndroidActivityResultReceiver: avoid double(triple)-lookupMarc Mutz2021-11-201-6/+9
| | | | | | | | | | | | | | | | The code used the if (!contains()) { insert() } anti-pattern, necessitated by Qt's deviation from the STL of allowing insert() to overwrite an existing entry, causing two lookups of the same key. Fix by recording the size prior to the execution of the indexing operator and taking a size increase as the cue to populate the (new) entry. This way, we look up the key only once. Also fix two instances of double lookup caused by the if (contains()) { value() } anti-pattern. Change-Id: I961fe45ec571aa94aff5dd578f2276e7b74d800d Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* Use Authz API to query permissions info in Windows filesystem backendIevgenii Meshcheriakov2021-11-192-117/+215
| | | | | | | | | | | | | | | | | | | | | | | | | | Microsoft documentation for GetEffectiveRightsFromAclW function that was used previously has this at the top of the page: > GetEffectiveRightsFromAcl is available for use in the operating > systems specified in the Requirements section. It may be altered > or unavailable in subsequent versions. Instead, use the method > demonstrated in the example below. This says to me that the function is deprecated. In addition to that, it is not able to handle ACLs that are not in "canonical" order, returning ERROR_INVALID_ACL. Such ACLs are useful to represent POSIX permissions in Windows, and are produced by Cygwin for example. This patch uses Authz API referenced by the message quoted above. The used API is available starting from Windows XP/Windows Server 2003. This API also allowe to perform access checks given access token, and so allows to use similar code all permission checks. Task-number: QTBUG-79750 Change-Id: I8b11ff3cc83cd9ed5bfb2ce9432a375a122cdbbf Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* xcb: Return standalone image from QXcbBackingStore::toImage()Tor Arne Vestbø2021-11-191-1/+7
| | | | | | | | | Otherwise the original backingstore image will detach from the m_xcb_image data on the next backingstore paint or scroll. Pick-to: 6.2 Change-Id: I73f68d9c2e7c106951541831a5df8b97695f2001 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* Skip disabled proxy widgets when (back)tabbingAlexander Volkov2021-11-191-1/+4
| | | | | | | Fixes: QTBUG-98137 Pick-to: 6.2 5.15 Change-Id: If52053dce361b130ef7dcfaf747710d8ceb9bbcd Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Move the 'qmake' feature to src/tools/configure.cmakeJoerg Bornemann2021-11-191-0/+7
| | | | | | | | This allows us to present 'qmake' in the tool-related section of the configure summary. Change-Id: I897dec23cb0608706ec01d9b91283dbce92b293f Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Add configure feature 'androiddeployqt'Joerg Bornemann2021-11-192-2/+15
| | | | | | | | | | | This makes it possible to turn off the build of the Android deployment tool. A new src/tools/configure.cmake is added that will be the place for all tool-related features in qtbase. Change-Id: Ic9264c93ee96de06c97d21d2f27f73256f48ffda Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Add more verification when parsing http headers and add testsØystein Heskestad2021-11-191-23/+61
| | | | | | | | Adding tests from QtWebSockets that will reuse QHttpHeaderParser Task-number: QTBUG-80700 Change-Id: I76294a9156173314a3cf09160d0ca4e0d7c6ef3a Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* Compile: Work around false positive on gcc >= 900Morten Johan Sørvig2021-11-191-1/+1
| | | | | Change-Id: Id9d2c968322963af6a2e31f0d9e4195120d0b5ea Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* wasm: remove unused variableMorten Johan Sørvig2021-11-191-4/+0
| | | | | | Change-Id: I442e3dc4534193709c3510c43a484e5d3c2eb4af Reviewed-by: David Skoland <david.skoland@qt.io> Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
* Link printer plugins into user projects when using a static QtJoerg Bornemann2021-11-193-4/+6
| | | | | | | | | | | | When building a user project against a static Qt on Windows or macOS the static printer support plugins were not linked. Move the Q_IMPORT_PLUGIN statements to qplatformprintplugin.cpp, which is a translation unit that is guaranteed to be linked into the user project. Pick-to: 6.2 Fixes: QTBUG-97490 Change-Id: Ic35c6483a664a06461304c7e8a2b7b06ce651ed6 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* Fix generating of Android deployment config in Multi-Config buildAlexey Edelev2021-11-191-1/+2
| | | | | | | | | | Add the config-specific suffix to the generated Android deployment config file. Amends d20f4ae706559fb7de8db9dd4845f7ce3936061a Change-Id: If1755baf5548adb4d95733477d8b5af85e1fd2dd Reviewed-by: Alexandru Croitor <alexandru.croitor@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>
* QLoggingRegistry: avoid double-lookupMarc Mutz2021-11-191-2/+5
| | | | | | | | | | | | | The code used the if (!contains()) { insert() } anti-pattern, necessitated by Qt's deviation from the STL of allowing insert() to overwrite an existing entry, causing two lookups of the same key. Fix by recording the size prior to the execution of the indexing operator and taking a size increase as the cue to populate the (new) entry. This way, we look up the key only once. Change-Id: Ica039035fe9ea4b88c20184784c324c9fac33d49 Reviewed-by: Kai Koehne <kai.koehne@qt.io>
* QHash: optimize value(key) and key(value) callersMarc Mutz2021-11-192-25/+99
| | | | | | | | | | | | | | | | | | | | | | | | | | ... by not injecting potentially-expensive temporary objects into the caller's stack frame. Default arguments are a convenient way to avoid overloads, but if the defaulted argument isn't a Trivial Type, and the common use case is not to pass the extra argument explicitly, the construction of the temporary can dominate the call's runtime. Since QHash is generic code, we don't know whether T or Key are expensive or cheap to construct, so use overloading instead of default arguments to avoid injecting needless code into call sites. [ChangeLog][QtCore][Potentially Source-Incompatible Changes][QHash/QMultiHash] The value(key) and key(value) functions are now overloaded on presence of the defaultValue (was: defaulted argument) to avoid injecting temporary objects into the caller's stack frame. Task-number: QTBUG-98117 Change-Id: I80fdd5436f3de3e4bbe20242fe45916aef62ff0c Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Lars Knoll <lars.knoll@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>