summaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* Drag qstring.h out of the qstringbuilder.h guardMarc Mutz2023-08-041-1/+2
| | | | | | | | | | | | | | | qstringbuilder.h needs qstring.h completely parsed. Without this change, we won't be able to include qstringconverter.h even at the end of qstring.h (needed for QTBUG-114208). Picking back to 6.5 to reduce the diff with our LTS going forward. Task-number: QTBUG-114208 Pick-to: 6.6 6.5 Change-Id: I83d5bcc0939b698209481793f60a0199aa95a06e Reviewed-by: Dennis Oberst <[email protected]> Reviewed-by: Thiago Macieira <[email protected]> Reviewed-by: Qt CI Bot <[email protected]>
* Consider BUILD_SHARED_LIBS when adding libraries using _qt_internal_add_libraryAlexey Edelev2023-08-042-3/+4
| | | | | | | | | | | | | | | | | It does look safe to consider the value of BUILD_SHARED_LIBS in _qt_internal_add_library. Current behavior might confuse users that specify BUILD_SHARED_LIBS explicitly but get the library types according to Qt build type. [ChangeLog][CMake] qt6_add_library now considers the value of the BUILD_SHARED_LIBS variable. If the variable is DEFINED it has higher priority than the library type detecting logic in qt6_add_library when adding the library targets. Change-Id: I1c40e887c4e481424a596c870a8ff2784b08fcbb Reviewed-by: Qt CI Bot <[email protected]> Reviewed-by: Joerg Bornemann <[email protected]> Reviewed-by: Alexandru Croitor <[email protected]>
* CMake: Place resources into static libraries, not object librariesAlexandru Croitor2023-08-044-8/+125
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | During the Qt 5 -> Qt 6 and qmake -> CMake porting time frame, it was decided to keep resources in an object file (object library), rather than putting them directly into a static library when doing a static Qt build, so that the build system can take care of linking the object file directly into the executable and thus not forcing project developers to manually initialize resources with the Q_INIT_RESOURCE() macro in project code. This worked for most qmake and cmake projects, but it created difficulties for other build systems, in the sense that these projects would have to manually link to the resource object files, otherwise they would get link time errors about undefined resource symbols, assuming they kept the Q_INIT_RESOURCE() calls. If the project code didn't contain Q_INIT_RESOURCE calls, the situation would be even worse, the linker would not error out, and the missing resources would only be discovered at runtime. It's also an issue in CMake projects that try to link to the library files directly instead of using the library target names, which means the object files would not be automatically linked in. Many projects try to do that because we don't yet offer a convenient way to install libraries and reuse them in other projects (the SDK case), so projects end up shipping only the libraries, without the resource object files. We can improve the situation by moving the resources back into their associated static libraries, and only keeping a static initializer as a separate object file / object library, which references the actual resource initializer symbol, to ensure it does not get discarded during linking. This way, projects that link using targets get no behavior difference, whereas projects linking to static libraries directly can still successfully build as long as their sources have all the necessary Q_INIT_RESOURCE calls. To ensure the resource symbols do not get discarded, we use a few new private macros. We declare the resource init symbols we want to keep as extern symbols and then assign the symbol addresses to volatile variables. This prevents discarding the symbols with the compilers / linkers we care about. It comes at the cost of an additional static initializer per resource, but we would get the same + a bigger performance hit if we just used Q_INIT_RESOURCE twice (once in the object lib and once in project code), which internally needs to traverse a linked list of all resources to check if a resource was initialized or not. For GHS / Integrity, we also need to use a GHS-specific pragma to keep the symbols, which we currently use in qtdeclarative to ensure qml plugin symbols are not discarded. The same macros will be used in a qtdeclarative change to prevent discarding of resources when linking to static qml plugins. A cmake-based test case is added to verify that linking to static libraries directly, without linking to the resource initializer object libraries, works fine as long as the project code calls Q_INIT_RESOURCE for the relevant resource. Fixes: QTBUG-91448 Task-number: QTBUG-110243 Change-Id: I39c325aac91e36d53c3576a39f881949c3b21e3f Reviewed-by: Alexey Edelev <[email protected]> Reviewed-by: Qt CI Bot <[email protected]>
* Fix link to platform window in QAndroidPlatformBackingStore::flush()Axel Spoerl2023-08-0414-50/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The Android QPA implementation requires a 1:1 link between a platform window and a platform backing store, to correctly flush a backing store to the screen. QAndroidPlatformBackingStore has a bool member m_backingStoreSet, to remember if this link exists. It defaults to false and is set to true, when setBackingStore() is called in the constructor. It falsely remains true, when a platform window is deleted, e.g. because a QWindow has been hidden. When the QWindow is shown again, a new Android platform window is created. With m_backingStoreSet still being true, this new platform window will never be associated with a backing store. As a consequence, it will never be displayed on the screen. The 1:1 relationship of an Android platform window and an Android backing store is neither ideal, nor in line with other QPA layers (e.g. XCB). Changing the Android QPA implementation is complex and a short term fix is necessary. This patch removes the member m_backingStoreSet. Instead of it, QAndroidPlatformBackingStore::flush() directly checks, if the platform window corresponding to the QWindow argument is associated to a backing store. If that is not the case, setBackingStore() is called. QTBUG-97482 has been fixed with another approach, which this patch reverts. The following commits are effectively reverted by this patch: 9a39ad8dfb4e6d1a179bd0fa38026886f8f7cb8e f91588923b1e7b68f1bd79b38af44d024df85996 a4ca9e80658bca7dad1529f03c1b59173a6ecf62 dbb072eb2838a04e89e34dad686394a496d5de87 959a8b3967ac3b6315f5b458628ec5661dfc367e Fixes: QTBUG-97482 Pick-to: 6.6 6.5 6.2 Change-Id: Ic4344f8df2e954c057dd2705340f11dfd2d4c6fe Reviewed-by: Tor Arne Vestbø <[email protected]>
* CMake: remove TEST_syslog but not FEATURE_syslogThiago Macieira2023-08-031-18/+0
| | | | | | | | | | | | | This feature was already in AUTODETECT OFF. That means we only enabled syslog() support if the user explicitly asked for it, which reasonably means they have the API. The API is also POSIX.1-2001 and 4.2BSD, so everyone has it. Saves 350 ms of CMake time, because the test was compiled even though AUTODETECT was OFF. Change-Id: Ifbf974a4d10745b099b1fffd1777572e74a90043 Reviewed-by: Alexey Edelev <[email protected]>
* CMake: remove check for statx() and replace with STATX_BASIC_STATSThiago Macieira2023-08-033-32/+4
| | | | | | | | | | We were already using this in qfilesystemengine_unix.cpp. In fact, the only place where we had QT_CONFIG(statx) was in minimum-linux_p.h. Saves 350 ms of CMake time. Change-Id: Ifbf974a4d10745b099b1fffd177756e2edf2bf3e Reviewed-by: Alexey Edelev <[email protected]>
* Fix memory leak in QGtk3Interface::themeNameThorbjørn Lindeijer2023-08-032-8/+11
| | | | | | Pick-to: 6.6 6.5 Change-Id: Ib8c90f7ef66c095f0c1fc04f4cc72bf5eea72ddb Reviewed-by: Axel Spoerl <[email protected]>
* Wrap QLocale's CLDR-derived string data tables to a 100-column marginEdward Welbourne2023-08-034-5886/+9801
| | | | | | | | | | The string data tables have a mix of digit-length tokens, up to four-digit hex; we can fit 12 of those per line within our margins. Leave the one-row-per-locale tables as they are, though, despite long lines. Change-Id: I655fddecf24133c26d16187b7a5a8fbc25553e07 Reviewed-by: Ievgenii Meshcheriakov <[email protected]>
* Don't protect qstringbuilder.h indirect includesMarc Mutz2023-08-032-4/+0
| | | | | | | | | | | | | | | | | | | It's a) not needed, because qstringbuilder.h simply just defines op% and not op+ when these defines are not set and b) surprising for users that they have to include <qstringbuilder.h> if they want to use op% without also setting one of these defines. Finally, it just throws readers of the code off the track for no good reason. So, drop the external guards for qtringbuilder.h in qstring.h and qstringconverter.h. Task-number: QTBUG-114208 Pick-to: 6.6 6.5 Change-Id: I00b3e405d905d319437c32a7253b39de1625d096 Reviewed-by: Qt CI Bot <[email protected]> Reviewed-by: Ivan Solovev <[email protected]> Reviewed-by: Thiago Macieira <[email protected]> Reviewed-by: Dennis Oberst <[email protected]>
* qdbuscpp2xml: Support MEMBER field of Q_PROPERTYIevgenii Meshcheriakov2023-08-031-0/+2
| | | | | | | | | | | | | Emit properties with MEMBER field specified with 'readwrite' access. Previously only READ and WRITE filed where used for deriving the access value. Add a property using MEMBER to the test class used by tst_qdbuscpp2xml. Fixes: QTBUG-115631 Change-Id: I12351985a9fafd934ccc5e0b805077a9e44b6608 Reviewed-by: Thiago Macieira <[email protected]>
* macOS: Ensure foreign windows can be reparented via QWindow::setParent()Tor Arne Vestbø2023-08-031-4/+8
| | | | | | | | | | | | | | | | | | | In b64b0c7947f9f2b0ab4ed33fe526880f54e3981f we bailed out from QCocoaWindow::recreateWindowIfNeeded() for foreign windows, as we should not manage any NSWindows on their behalf. Unfortunately QCocoaWindow::recreateWindowIfNeeded() also took care of adding the view as a subview to the potential non top level view, which we do want for foreign views. Ideally we'd move the reparenting out of recreateWindowIfNeeded() and into QCocoaWindow::setParent(), but this is a more intrusive change, so for now just restore the original missing logic. Pick-to: 6.6 6.5 Change-Id: Ic35ebf94d4adc2f19cedb1cb6a5d0215a1c9c2b4 Reviewed-by: Friedemann Kleint <[email protected]> Reviewed-by: Christian Strømme <[email protected]>
* rhi: Enhance the hdr info struct and add a manual testLaszlo Agocs2023-08-038-178/+308
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ...while sharing the related code between the d3d backends. The isHardCodedDefaults flag is not used in practice and is now removed. Add the luminance behavior and SDR white level (for Windows) to help creating portable 2D/3D renderers that composite SDR and HDR content. (sadly the Windows HDR and Apple EDR behavior is different, as usual) The new test application is expected to run with the command-line argument "scrgb" or "sdr". It allows seeing SDR content correction (on Windows) in action, and has some simple HDR 3D content with a basic, optional tonemapper. Also shows the platform-dependent HDR-related screen info. With some helpful tooltips even. Additionally, it needs a .hdr file after the 'file' argument. The usual -d, -D, -v, etc. arguments apply to select the 3D API. For example, to run with D3D12 in HDR mode: hdr -D scrgb file image.hdr The same in non-HDR mode: hdr -D sdr file image.hdr Change-Id: I7fdfc7054cc0352bc99398fc1c7b1e2f0874421f Reviewed-by: Christian Strømme <[email protected]>
* Doc: Move \target command to inside table cellPaul Wicking2023-08-031-8/+4
| | | | | | | | | | | `\target`s generate a span where they occur. If they occur outside a table cell, QDoc generates illformed html. Fix such instances by moving the offending line into the table cell they target. Task-number: QTBUG-115247 Pick-to: 6.6 6.5 Change-Id: I677e909ec73a6d0af8195d88d23581d8dd97c6e5 Reviewed-by: Luca Di Sera <[email protected]>
* QDbus: Avoid memory leak in registerComplexDBusTypeFabian Kosmale2023-08-031-1/+4
| | | | | | | | | | | | | QMetaType does not own the interface from which it is constructed. Consequently, we end up with a memory leak. This is not a huge issue, given that the map of meta-types is static, and the application is about to be close when can discard it anyway, but it causes avoidable sanitizer warnings, which are annoying when debugging more severe memory leaks. Pick-to: 6.6 6.5 Change-Id: Ifee3f4e19835536f4a6cfa4f6866ab621581ad4f Reviewed-by: Thiago Macieira <[email protected]>
* CTF: Add streaming supportAntti Määttä2023-08-035-78/+686
| | | | | | | | | | | | | | | | | | Implement TCP server to stream trace data. Use the QTRACE_LOCATION environment variable to configure the server address and port. The rest of the configuration is done in the client TraceRequest. The user can configure the compression level, buffer size and whether the server is buffering when client doesn't have connection. The server responds with basic response and then begins sending packets until the client disconnects or the app closes. Each packet contains stream name, stream data and whether to overwrite the stream, which is used with metadata streams. Task-number: QTBUG-105976 Change-Id: I41c708a4c7988666d59f0c6093dd41e8ccd88441 Reviewed-by: Janne Koskinen <[email protected]>
* CTF: Clear output location at startupAntti Määttä2023-08-032-5/+26
| | | | | | | | | Remove old files from the output location before saving new ones. Pick-to: 6.6 6.5 Change-Id: I75181126c6c920e13951e9a46a6be1c666d457fe Reviewed-by: Antti Määttä <[email protected]> Reviewed-by: Janne Koskinen <[email protected]>
* QAbstractSocket: remove a redundant stack variableAhmad Samir2023-08-031-5/+3
| | | | | | | Just use the static const int directly. Change-Id: Icf37ac5db4457bbc8631659e175d038cfeed46e4 Reviewed-by: Timur Pocheptsov <[email protected]>
* QByteArray: change append(QByteArray) to match QStringBuilder behaviorAhmad Samir2023-08-031-3/+8
| | | | | | | | | | | | I.e. concatenating a null byte array and an empty-but-not-null byte array should result in an empty-but-not-null byte array. This matches the behavior of QString::append(QString) too. Fixes: QTBUG-114238 Pick-to: 6.6 Change-Id: Id36d10ee09c08041b7dabda102df48ca6d413d8b Reviewed-by: Thiago Macieira <[email protected]>
* qstringalgorithms: make trimmed_helper_positions [[nodiscard]]Ahmad Samir2023-08-031-1/+1
| | | | | Change-Id: Ic3a3ed29b2472487634715ee7b447b36d04b377f Reviewed-by: Thiago Macieira <[email protected]>
* Port QCoreApplication::requestPermission() to SlotObjUniquePtr internallyMarc Mutz2023-08-022-9/+39
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Well, except that the ownership of the slot object here is actually shared between the PermissionReceiver and the lambda passed to QPermission::Private::requestPermission(), which eventually may hand ownership over to QMetaCallEvent, so we can't really use SlotObjUniquePtr. While we can, of course, manually copy and call ref(), even if the slot-object is stored in a SlotObjUniquePtr, unfortunately, the lambda is subsequently stored in a std::function, which infamously cannot hold move-only objects, so we actually need something copyable. So grasp the nettle and implement a SlotObjSharedPtr. I was originally planning to just make this a typedef for QIntrusiveSharedPointer, but that's not in dev, yet, let alone 6.5, to which we're picking this, and there was always this nagging impedance mismatch between the QIntrusiveSharedPointer behavior, inherited from it's Q(Explicitly)SharedPointer roots, on the one hand, to always ref() in the constructor from raw pointer, and, OTOH, QSlotObjectBase starting its life with a ref-count of one (1) (not zero (0), like QSharedData). I eventually found the (elegant, if I may say so myself) solution to just not provide a constructor from raw pointer, only one from SlotObjUniquePtr, which, granted, has the same issue, but which is, by now, probably, hopefully, more fully grasped by QtCore regulars, and so we can piggy-back on that for SlotObjSharedPtr's constructor semantics. Add a comment nevertheless. Inside the lambda, we could theoretically move the slotObj into QMetaCallEvent::create(), after adding such conversion to SlotObjSharedPtr, but that would require making the lambda mutable, and seeing as it's stored in a std::function and copied around, I was not ready to make that change just yet. As a drive-by, make PermissionReceiver's constructor explicit. Pick-to: 6.6 6.5 Fixes: QTBUG-115330 Change-Id: I4e0cec13d19a19eeec31e4101ce289d07c92ce46 Reviewed-by: Fabian Kosmale <[email protected]>
* QSlotObjectBase: fix return value of ref()Marc Mutz2023-08-021-1/+1
| | | | | | | | | | QAtomicInt::ref() returns bool, not int, so do the same in our ref(). As a drive-by, drop the superfluous inline keyword. Pick-to: 6.6 6.5 Change-Id: I60712df3640b67dfd857355d364e0fc5a3a40650 Reviewed-by: Fabian Kosmale <[email protected]>
* CMake: remove TEST_glibcThiago Macieira2023-08-022-23/+1
| | | | | | | | | Commit aa82d295c8954a5d04fd446abc7452f007594422 changed from using minimum-linux.S to qlibraryinfo.cpp, so we no longer need this. Saves 350 ms of CMake time. Change-Id: Ifbf974a4d10745b099b1fffd177754aa5a4096ac Reviewed-by: Alexandru Croitor <[email protected]>
* CMake: remove check for cxx11_futureThiago Macieira2023-08-023-34/+3
| | | | | | | | | | | Everyone must have this by now. This test was 1193 ms of CMake time. Since this was a PUBLIC feature, I've left it around with a constant condition. Change-Id: Ifbf974a4d10745b099b1fffd177754538bbff245 Reviewed-by: Qt CI Bot <[email protected]> Reviewed-by: Fabian Kosmale <[email protected]>
* CMake: remove test for cxx11_randomThiago Macieira2023-08-022-21/+0
| | | | | | | | | | | Everyone has it, without exception. QRandomGenerator uses the Mersenne twister without checking, so you can't have Qt without this. This test was here only to produce an error at CMake time instead of at build time, but that test costs 650 ms for everyone running CMake without cached results. Change-Id: Ifbf974a4d10745b099b1fffd177753b6d4fc89d4 Reviewed-by: Fabian Kosmale <[email protected]>
* Use new QBA::assign in QXcbMime::mimeDataForAtomDennis Oberst2023-08-021-2/+1
| | | | | | | | | | | QByteArray::assign() re-uses existing unshared capacity(), if any, and is therefore potentially more efficient than '= QByteArray(~)' (and never slower). Task-number: QTBUG-106201 Pick-to: 6.6 Change-Id: I5e5114064c8aaa23892e95c235335632d7c5cd0a Reviewed-by: Marc Mutz <[email protected]>
* QFreeList: Resolve symbol ambiguity in unity buildDennis Oberst2023-08-022-5/+6
| | | | | | | | | | | | | | Remove 'qfreelist.cpp' from the NO_UNITY_BUILD_SOURCES section and fix the underlying problem of the clashing symbols with 'qabstracteventdispatcher.cpp', by wrapping the unnamed enum in a namespace. Amends: a07426d23a02bd4029c6576f92fa43d324ff56be. Task-number: QTBUG-109394 Pick-to: 6.6 6.5 Change-Id: I585ab06a33d46a11a48220f504c53a5f4fa91d7e Reviewed-by: Marc Mutz <[email protected]>
* Make more of tst_settings pass on WASMMikolaj Boc2023-08-021-57/+116
| | | | | | | | | | | | | | | | Missing parts of local storage backend implemented: - fallback mechanism - removal of all child keys for groups - variant decoding instead of string decoding - report AccessError when organization is empty in settings' ctor Some WASM-specific adjustments to tst_qsettings have also been introduced. Task-number: QTBUG-115509 Fixes: QTBUG-115037 Change-Id: I02cde965b11d98a64fc1ecb261d74838c508afd6 Reviewed-by: Morten Johan Sørvig <[email protected]>
* Implement text update in wasm apps during accessibilityShreya Pattani2023-08-021-2/+5
| | | | | | | | | Implementation for QAccessibleEditableTextInterface is pending for texts in qml accessibility, adding accessibile role check for text to be updated when accessibility feature is on in wasm Change-Id: Ic24ebf6942e50a5952126e312afa633ed4fbe9ce Reviewed-by: Mikołaj Boc <[email protected]>
* QPlatformWindow: add a macro when setBackingStore() is virtualMarc Mutz2023-08-021-0/+1
| | | | | | | | | | | | | This is the only way to detect, and act upon, the addition of the virtual function in other Qt modules. Amends a4ca9e80658bca7dad1529f03c1b59173a6ecf62. Pick-to: 6.6 Task-number: QTBUG-97482 Task-number: QTBUG-115691 Change-Id: Id32fdd3d8af1fced17983dd104318645a5578b8c Reviewed-by: Axel Spoerl <[email protected]>
* eglfs plugin: port away from Q_FOREACHMarc Mutz2023-08-023-2/+4
| | | | | | | | | | | | Mark the module are Q_FOREACH-free, so it stays that way. These two instances are risk-free, because the loop is over local variables that the loop bodies clearly do not touch, so the safety copy that Q_FOREACH takes is not required here. Pick-to: 6.6 Change-Id: Ida3c1d51c661d77a59a2ad105e080c3c9b66c53f Reviewed-by: Shawn Rutledge <[email protected]>
* Update QLocale to CLDR v43Edward Welbourne2023-08-026-5712/+6606
| | | | | | | | | | | | Ran the scripts, added the new enum members to docs. Updated tests: * Two of the new languages are right-to-left, * Canada has replaced a silly date format with a sensible one. Fixes: QTBUG-111550 Change-Id: Ie6f1e6e94477167c9e2b5c67e6518ca0f6a7e7fb Reviewed-by: Mate Barany <[email protected]> Reviewed-by: Ievgenii Meshcheriakov <[email protected]>
* QDBusXmlParser: downgrade property name mismatches to warningsThiago Macieira2023-08-011-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | This has happened before: there's a disagreement on whether property names need to be identifiers or not. In Qt, we insist they are, and if this code had been around before, other specifications from other teams in freedesktop.org and gnome.org would have adhered to this rule. But it wasn't, so such properties exist (see [1]). Commit bcc93850fc73689bdd796b19f98cca525636a0fd converted the check that had bene here all along as a proper error for qdbusxml2cpp. So downgrade it a warning and move on. An alternative implementation would keep on going and install this property with the invalid name, but qdbusxml2cpp and other generators may want to ignore such property names later on. I'm not implementing this in a bug fix (or at all). [1] https://fprint.freedesktop.org/fprintd-dev/Device.html Fixes: QTBUG-115596 Task-number: QTBUG-2597 Pick-to: 6.6 Change-Id: Ifbf974a4d10745b099b1fffd1776fb8cc9239125 Reviewed-by: Ievgenii Meshcheriakov <[email protected]>
* Implement private visualRect() in QTreeView and QAbstractItemViewAxel Spoerl2023-08-014-44/+82
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QTreeView::visualRect() returns a given model index's visual rectangle. The method is used to toggle the background during hovering. The previous implementation included the row indicator, when the first row section was hovered. When it was unhovered, the row indicator remained highlighted, until the mouse had left the view port. The reason is, that the highlighting implementation changed the rectangle returned for the first section, to include the row indicator. The implementation for neutralising a highlighted section relies on QAbstractItemViewPrivate::setHoverIndex() and QAbstractItemView::update(). These methods don't know about the row indicator to be included, and therefore do not update() its rectangle. As a consequence, the correct background gets painted but not updated on the screen. This patch moves the calculation of the visual rectangle to a new QTreeViewPrivate::visualRect_impl(). In addition to the model index, the new method expects an enum argument, representing the calculation rule: - SingleSection: Calculate the rectangle of the given section. - FullRow: Returns the rectangle of the entire row, regardless of the index's column. - AddRowIndiCatorToFirstCulumn: Adds the row indicator to the rect, if the model index points to the first column. The patch updates all calls within QTreeView, to use the private method with the right calculation rule for the use case at hand. It elminates manual (and repeated) modifications of the return value. The patch implements QAbstractItemViewPrivate::visualRect(), which returns QAbstractItemView::visualRect(). It is overridden in QTreeViewPrivate, so that QAbstractItemViewPrivate::setHoverIndex() and QAbstractItemView receive the rectangle including row indicator. As a drive-by, several local variables have been constified and/or renamed to indicative variable names. Fixes: QTBUG-115149 Pick-to: 6.6 6.5 Change-Id: I4838bcf744f87d8cfb259c5d8758fb65e091e9fe Reviewed-by: Tor Arne Vestbø <[email protected]>
* Use new QBA::assign in QCoreApplication::applicationFilePath()Dennis Oberst2023-08-011-1/+1
| | | | | | | | | | | | | QByteArray::assign() re-uses existing unshared capacity(), if any, and is therefore potentially more efficient than '= QByteArray(~)' (and never slower). Task-number: QTBUG-106201 Pick-to: 6.6 Change-Id: Ieeb254afd94e26f1b425795feb53c59ebb2322c6 Reviewed-by: Friedemann Kleint <[email protected]> Reviewed-by: Marc Mutz <[email protected]> Reviewed-by: Thiago Macieira <[email protected]>
* Use new QBA::assign in QStorageInfoPrivate::retrievePosixInfoDennis Oberst2023-08-011-2/+2
| | | | | | | | | | | | QByteArray::assign() re-uses existing unshared capacity(), if any, and is therefore potentially more efficient than '= QByteArray(~)' (and never slower). Task-number: QTBUG-106201 Pick-to: 6.6 Change-Id: Ic51fc57eb0f84d3624ad3447c93a74241ab3612b Reviewed-by: Thiago Macieira <[email protected]> Reviewed-by: Marc Mutz <[email protected]>
* Use QT_SUPPORTS_INT128 macro to handle 128-bit integral typesIvan Solovev2023-08-013-6/+12
| | | | | | | | | | | | | | | | | | | Introduce QT_SUPPORTS_INT128 and QT_NO_INT128 marcos to handle 128-bit types. These macros allow to undef Qt's own 128-bit types and the related code, but keep the compiler definitions unchanged. This is required for Qt Bluetooth, where we need to use QT_BLUETOOTH_REMOVED_SINCE to get rid of the APIs using QtBluetooth-specific struct quint128 which clashes with the 128-bit types. The idea is to use QT_NO_INT128 in Qt Bluetooth's removed_api.cpp instead of directly undef'ing __SIZEOF_INT128__, because the latter is UB. This commit amends befda1accab417ce5f55cb11816e6ded51af55e3. Pick-to: 6.6 Change-Id: Ia2c110b5744c3aaa53eda39fb44984cf5a01fac2 Reviewed-by: Thiago Macieira <[email protected]>
* CTF: Simplify writing endianness to metadataAntti Määttä2023-08-011-5/+1
| | | | | | | Pick-to: 6.5 6.6 Change-Id: Ie10533dc22746c31941d5d60d2cc7aa81436fee0 Reviewed-by: Hatem ElKharashy <[email protected]> Reviewed-by: Janne Koskinen <[email protected]>
* CTF: Use wfopen in windowsAntti Määttä2023-08-011-4/+13
| | | | | | | Pick-to: 6.5 6.6 Change-Id: If54fe2b0af32a097cac6f485900ec5e353d92dd9 Reviewed-by: Hatem ElKharashy <[email protected]> Reviewed-by: Janne Koskinen <[email protected]>
* QMetaType: fix recursive detection of std::optional operatorsThiago Macieira2023-07-311-2/+2
| | | | | | | | | | | | | | Commit ca54b741d6edda24773137aacee229db31dd3585 used the internal has_operator_equal (and commit 01d94760d8d34e51e1442682fc151747943c7e25 copied that for has_operator_less_than) instead of using the recursive expander that was being used here. That assumed that the contained type in std::optional would always be the last final check, which is an incorrect assumption. Fixes: QTBUG-115646 Pick-to: 6.6 6.5 Change-Id: Ifbf974a4d10745b099b1fffd177702934bec27ff Reviewed-by: Fabian Kosmale <[email protected]>
* rhi: Guard QRhiVulkan more in qrhi_platform.hLaszlo Agocs2023-08-011-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | Replicate qvulkaninstance.h's logic. The idea being to allow to compile code that uses QRhi (so includes qrhi.h) with a pre-built Qt that was built with Vulkan support, but there is no Vulkan SDK (and so vulkan.h) on the developer's system. Normally this is not something we care about, e.g. compiling an application using QVulkanInstance or any other Vulkan functionality implies one has to have the SDK installed or at least the headers available in one way or another. However, including qrhi.h (and so qrhi_platform.h) happens in some cases in applications that do not themselves initialize a QRhi, i.e. they do not care about the QRhiVulkan* structs, because they only ever use a QRhi retrieved e.g. from the QQuickWindow. Design Studio is one example. To allow building DS against a Qt that is Vulkan-enabled (e.g. the official Qt releases) but in an environment that has no Vulkan headers, we skip the QRhiVulkan* stuff when there is no vulkan.h available. Pick-to: 6.6 Change-Id: Ic81250e6c90939a38f79cab1438fbb9f483f56df Reviewed-by: Miikka Heikkinen <[email protected]>
* QtConcurrent::run: point return value ignorers to QThreadPool::start(Callable&&)Marc Mutz2023-07-311-5/+10
| | | | | | | | | | | | | | Use the new Q_NODISCARD_X macro to point users that ignore the QFuture returned from QtConcurrent::run() to QThreadPool::start(), which does the same thing, but doesn't return a future, so is better suited for the fire-and-forget use-case the OP of and commentators on QTBUG-111875 cited. Can't pick to older branches, since Q_NODISCARD_X is 6.7+. Task-number: QTBUG-111875 Change-Id: If0bf920ecc0fb59b9a9a9931ea9dc30f7abff1b7 Reviewed-by: Ivan Solovev <[email protected]>
* Redefinition of root on qstorageinfo_stub.cppMarcin Zdunek2023-07-311-6/+0
| | | | | Change-Id: If35fddc8f23a1f8f610a318472d2f59cae81f144 Reviewed-by: Thiago Macieira <[email protected]>
* Remove assertion in QAndroidPlatformScreen::addWindow()Axel Spoerl2023-07-311-1/+0
| | | | | | | | | | | | | | QAndroidPlatformScreen::addWindow() asserted the existence of a backing store, when a window is added. But QQuickWindow neither needs nor has a backing store. This patch removes the assertion, which was introduced in dbb072eb2838a04e89e34dad686394a496d5de87 Task-number: QTBUG-97482 Pick-to: 6.6 6.5 6.2 5.15 Change-Id: Ifb43f83d39e16b972754e86d0ff9633f58dac3f8 Reviewed-by: Shawn Rutledge <[email protected]>
* Use correct index for QLocale::system()'s staticEdward Welbourne2023-07-312-7/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Nothing prevents client code from calling QLocale::setDefault() before we ever instantiate QLocale::system() - aside from some quirks that mean setDefault(), currently, does instantiate QLocale::system() to force initialization of defaultLocalePrivate - so using defaultIndex() could set the system QLocalePrivate instance's index incorrectly. In any case, even if the index is initially set correctly, a subsequent change to the system locale would change the correct index; and nothing outside QLocale::system() has access to the instance that would then be remembering an out-of-date index. Actually tripping over that inconsistency took some deviousness, but was possible. The index is (currently) only used for month name lookups and those special-case, for the Roman-derived calendars, the system locale, to only use the index if the system locale offers no name for a month. Meanwhile, updateSystemPrivate() uses the fallback locale's index for its look-up of which CLDR data to copy into the fallback QLocaleData for the system locale. None the less, a non-Roman calendar's lookup will go via the index to get at the CLDR data for that calendar, thereby exposing the system locale's index to use; and, sure enough, a setDefault() could lead that to produce wrong answers. In QLocale::system() there's a cached QLocalePrivate, whose index we need to ensure stays in sync with the active system locale. So pass its &m_index to systemData(), which will now (when passed this) ensure it's up to date. Since we always have called systemData(), to ensure it is up to date, we can skip that update in the initialization of the cached private and use m_index = -1 to let systemData() know when it's in the initial call, thereby making the static cache constinit. Amended a test to what proved the issue was present. Change-Id: I8d7ab5830cf0bbb9265c2af2a1edc9396ddef79f Reviewed-by: Thiago Macieira <[email protected]> Reviewed-by: Qt CI Bot <[email protected]>
* QDBusPendingCallPrivate: Remove declaration of fromMessage()Ievgenii Meshcheriakov2023-07-311-2/+0
| | | | | | | | The member function is never implemented. Change-Id: Iee93c7d24df40b48b897d937889bb9556b8feb1a Reviewed-by: Qt CI Bot <[email protected]> Reviewed-by: Thiago Macieira <[email protected]>
* xcb: guard a pointer before usageLiang Qi2023-07-311-2/+4
| | | | | | | | | | | | in QXcbAtom::initializeAllAtoms(). See also the example in https://manpages.debian.org/testing/libxcb-doc/xcb_intern_atom_reply.3.en.html Fixes: QTBUG-115599 Pick-to: 6.6 6.5 6.2 Change-Id: I6590fe1aa11deec7fef7ce6d8f5c49a71d636648 Reviewed-by: Axel Spoerl <[email protected]>
* Handle Null rhi backend in backingstoreLaszlo Agocs2023-07-311-0/+5
| | | | | | | | Was missing for some reason when this got added in 6.4. Pick-to: 6.6 6.5 Change-Id: I4f8b780c7119649688d8d8a197e8ef59730b0b61 Reviewed-by: Andy Nichols <[email protected]>
* rhi: Run cleanup callbacks before the pending deletesLaszlo Agocs2023-07-311-2/+2
| | | | | | | | | If a callback deleteLaters a QRhiResource that should still be handled and not left unreleased. Swap the order. Pick-to: 6.6 6.5 Change-Id: I8419a28a9db5bb59f768ab5820dfaf593464d6d2 Reviewed-by: Andy Nichols <[email protected]>
* rhi: Enable registering cleanup callbacks with a keyLaszlo Agocs2023-07-313-0/+45
| | | | | | | | | And the ability to deregister. Going to be required by QRhiWidget. Change-Id: If185cbed2faa042098ac1f6bb1d6daaffd834377 Reviewed-by: Andy Nichols <[email protected]>
* rhi: vulkan: use the clamped api version for vmaLaszlo Agocs2023-07-311-6/+3
| | | | | | | | | | | | | caps.apiVersion is inst->apiVersion() limited by the version the physical device reports. Therefore, use caps.apiVersion when setting up the memory allocator, like it is done everywhere else. This is expected prevent vma init failures on lavapipe in some Linux distros. Pick-to: 6.6 6.5 Change-Id: I4e693820c95a5e0174846afb20e42aadd56034d6 Reviewed-by: Andy Nichols <[email protected]>