Commit Graph

12709 Commits (2cc458abfb2ab252d34bbdedcecf73ebd19335e5)

Author SHA1 Message Date
Volker Hilsheimer aab6d336f7 Fix qdoc warning, it's QThread::Priority
Change-Id: If3df55ff95f8bdb510bdc3578ba3c7c03b9029a1
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2021-04-12 23:53:01 +02:00
Mårten Nordheim bb85831e4d QtFuture::connect: disconnect signals first
During reportFinished we may call a continuation which might end up
triggering one of the signals.

Pick-to: 6.0 6.1
Change-Id: I19546fcca12be71cd536e4287eb5eddd9d236830
Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2021-04-12 12:37:40 +02:00
JiDe Zhang c9bbc025f0 Add "QT_DEPRECATED_VERSION_XXX" macros
Since 6.3 to 6.6, for which version add "QT_DEPRECATED_VERSION_X_6_"
and "QT_DEPRECATED_VERSION_6_" macro.

Change-Id: I10c77b1ed436ce3442960f5594f86a3a3be181f2
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2021-04-12 10:03:26 +08:00
Qt CI Bot 922fbfd2ba Merge integration refs/builds/qtci/dev/1617996746 2021-04-09 21:23:22 +00:00
Niclas Rosenvik 1b7f1aad40 Fix generating mimedatabase with generate.pl using make
When building using make and having set QT_AVOID_CMAKE_ARCHIVING_API
to ON the build breaks with the message "sh: cannot create
.rcc/qmimeprovider_database.cpp: directory nonexistent" .
ninja creates this directory automatically, make does not.
Add a file MAKE_DIRECTORY cmake command to make sure the .rcc directory
is created.

Change-Id: I140279a794753436d427d647ab2231636827d07f
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2021-04-09 19:30:57 +00:00
Thiago Macieira 183df80b9c QCoreApplication: improve docs on exit() and quit() thread-safety
Reporter of QTBUG-91771 was confused.

Pick-to: 6.1
Change-Id: I26b8286f61534f88b649fffd166c4368167a5638
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2021-04-09 18:10:00 +00:00
Thiago Macieira 2e6c37fe51 QCoreApplication::exit: make it a slot
The documentation even refers to it as such. Instead of refactoring the
documentation to explain that it isn't, just make it a slot.

[ChangeLog][QtCore][QCoreApplication] exit() is now a slot, like quit().

Pick-to: 6.1
Change-Id: I26b8286f61534f88b649fffd166c43afbb80927f
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2021-04-09 11:10:00 -07:00
Allan Sandfeld Jensen c2348e2c7a Fix futexNeedsWake() on 64-bit systems
It was mistaking semaphore values over 0 as waiters, regardless of
actual waiters.

Pick-to: 6.1
Change-Id: Icebd01592ca8bdc1687a29dc569e3b630a262606
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2021-04-09 17:58:15 +02:00
Qt CI Bot d74261b594 Merge integration refs/builds/qtci/dev/1617904724 2021-04-08 21:14:09 +00:00
Alexander Volkov 9667ac1c2d Call statx() with AT_NO_AUTOMOUNT
Otherwise it can be very slow in some cases (e.g. 0.5 sec).
Besides, AT_NO_AUTOMOUNT is used by {l,f}stat() internally.

Pick-to: 6.1 6.0 5.15
Change-Id: Iae9c8b46dcdc96d21ac6b114a51c382b4949d3dd
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2021-04-08 17:57:36 +00:00
Niclas Rosenvik 7d3434f970 Fix environ build break on FreeBSD
QMAKE_LFLAGS_NOUNDEF = <EMPTY> for FreeBSD did not get converted
to CMakeLists.txt. This breaks the build on FreeBSD since environ
is missing from libc, it is available at runtime.
Turn -Wl,-no-undefined into warnings on FreeBSD to fix the build.
Also add a comment based on the one from corelib.pro .

Change-Id: I3835884a2682af0f68a4d65dede3e4e5d4104ac8
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2021-04-08 15:17:28 +00:00
Alexey Edelev 4ed9402d7a Fix linking order of the resource objects
The generated object resource library depends on the Qt::Core library
because uses the functions defined in qresource.cpp. Dummy linking of
the Qt::Core to an object library has an effect only when the object
library is linked directly to the executable as a target. If we link
the object library as INTERFACE library we miss out all the objects
that need to be linked to the executable. This behavior is explained
here:

    https://bit.ly/3sFWKvI

Thus, the only option to link the object library objects to the
endpoint executable is to use TARGET_OBJECTS property in genex, as
it's already done. But that means we are losing all profits that
target actually has, especially linking the object library dependencies.

The combination of both of the above methods does the job. The only
thing that looks fragile so far is order. Currently, the order we
use in the target_link_library call applies to the linker command line.
This means the object library objects must always appear before the
object library target.

Change-Id: If1f0e35e0445d5e96a1f2249ab44114cd36630e9
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2021-04-08 11:29:29 +02:00
Qt CI Bot b187ce87f9 Merge integration refs/builds/qtci/dev/1617813097 2021-04-07 21:01:58 +00:00
Qt CI Bot 5712853061 Merge integration refs/builds/qtci/dev/1617802255 2021-04-07 18:57:36 +00:00
Qt CI Bot fecba62d32 Merge integration refs/builds/qtci/dev/1617798649 2021-04-07 16:50:55 +00:00
Alexey Edelev cbdce59cd2 Add the SIMULATE_IN_SOURCE argument to _qt_internal_test_expect_pass
test_QFINDTESTDATA builds the project in the source tree, this is
necessary because the test requires relative paths to the source file
names. This function could be useful for other tests, so it makes sense
to extend the _qt_internal_test_expect_pass/fail macros to support
build in the source tree.
Note that, the SIMULATE_IN_SOURCE argument doesn't build the test in
the existing source tree, but copies source files to the build tree
first to do not litter the source directory.

Change-Id: I16e790d74be2a0c5ca0593e0f88580dbe09882b9
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2021-04-07 17:56:57 +02:00
Thiago Macieira 89a0ed1009 Allow qrandom_p.h to be included by more than one .cpp in QtCore
I thought we could use C++17 inline variables, but those can't be used
across DLL boundaries:

 qrandom_p.h:75:48: error: definition of 'QBasicAtomicInteger<unsigned int> qt_randomdevice_control' is marked 'dllimport'

Change-Id: Id2983978ad544ff79911fffd1671f857587ef2fb
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2021-04-07 08:36:03 -07:00
Sona Kurazyan a4d1ed854d Do not notify about property changes if the value hasn't changed
After 2ffb91ac59 we manually call notify()
for QObjectCompatProperties. Currently we always call it when setting
values to compat properties, even if the value hasn't actually changed.
Fixed to call notify() only if the value is being changed.

Task-number: QTBUG-85520
Change-Id: I385db84c4009c45406e204b96e0e37ce5fa8882b
Reviewed-by: Andreas Buhr <andreas.buhr@qt.io>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2021-04-07 14:51:04 +02:00
Edward Welbourne 0c9fc20e7f Avoid attempting to parse insanely long texts as zone names
There are limits on zone name length and the trial-and-error approach
we're more or less forced to take to parsing gets horribly expensive
if applied to every prefix of a very long string. So apply a loosened
version of the zone-name validity rule that limits the length of the
fragments between slashes and limit the number of such fragments.

Fixes: QTBUG-92275
Pick-to: 6.1 6.0 5.15
Change-Id: I83052b1b6888728c81135db22a9c6298ae439375
Reviewed-by: Robert Löhning <robert.loehning@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2021-04-07 14:51:04 +02:00
Mårten Nordheim 587e3bb0ba QSemaphore: fix missed wakes with futex on Windows
We do this by making the 'futexNeedsWakeAllBit' to be part of both the
expectedValue and the pointer we're waiting on.
This makes sense since having the 'futexNeedsWakeAllBit' set is a
requirement for starting a sleep. Thus we should condition
sleeping on whether or not another thread unset it.

Since the futexNeedsWakeAllBit is in the "topmost" bit of the pointer we
wait on we'll need to use the full 64-bits on 64-bit platforms.

This isn't enabled (nor was it an issue) for configurations with
'futexHasWaiterCount' since that works differently, and waits for the
high 32 bits.

Fixes: QTBUG-92148
Change-Id: I424c605f0120ea5e647c5bb19b00ff35eaf1608a
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2021-04-07 13:35:10 +02:00
ChunLin Wang b8802071ed Fix get out of bounds index in QSortFilterProxyModel::filterAcceptsRow
Before calling the index function, we need to check the validity of the parameters.

Fixes: QTBUG-91878
Pick-to: 5.15 6.0 6.1
Change-Id: I9ec7265fff3f81b8a288c4ba8fae606a2ec808a6
Reviewed-by: David Faure <david.faure@kdab.com>
2021-04-07 19:30:08 +08:00
Alexandru Croitor d0c2425d79 CMake: Choose better defaults for qt_add_plugin STATIC/SHARED
There was a recent behavior change where the public CMake API
qt_add_plugin API took into account the value of BUILD_SHARED_LIBS
to decide whether the plugin should be a static or shared library.

Instead, use the following new behavior

 - If no explicit option STATIC / SHARED option is passed, default to
   whatever flavor Qt was built as.
   Aka if Qt was configured with -shared, qt_add_plugin defaults
   to creating shared plugins. If it's a -static Qt, create static
   plugins.
 - If an explicit STATIC / SHARED option is set, override the default
   computed value with the given value.

As a result BUILD_SHARED_LIBS does not affect Qt plugins anymore. This
is more in line with Qt expectations.

Add SHARED as a new valid option to pass to qt_add_plugin (it wasn't
before).

Add tests to check for the above behavior.

Amends aa4a1006cb

Pick-to: 6.1
Fixes: QTBUG-92361
Task-number: QTBUG-88763
Change-Id: Iae806024ddd5cf10cfe58ddbcebd2818084b0bd7
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2021-04-07 10:10:55 +02:00
Volker Hilsheimer 1e8b085f8c Fix return type of QMetaType::sizeOf in documentation
Pick-to: 6.1
Change-Id: I6f5a866fa83f0e2720d62c5170c9283997b31a7f
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2021-04-07 09:57:44 +02:00
Robert Löhning d15bfba176 Explicitly set enums' type to avoid undefined behavior
Fixes oss-fuzz issue 31022.

Fixes: QTBUG-92159
Pick-to: 6.1
Change-Id: I8f0dfbe0e198f9ac43754758d18db1f0842d6eae
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2021-04-07 08:53:01 +01:00
Qt CI Bot d05118bf10 Merge integration refs/builds/qtci/dev/1617712854 2021-04-06 19:07:48 +00:00
Qt CI Bot 604087361c Merge integration refs/builds/qtci/dev/1617702467 2021-04-06 14:51:16 +00:00
Qt CI Bot 8398f9dada Merge integration refs/builds/qtci/dev/1617698863 2021-04-06 13:47:42 +00:00
Fabian Kosmale 4be2741aa2 Document meta-object revision 10
Amends cb43aaca11

Change-Id: I7bcf2b86aa29d00291f5d8ad44a89320b9eae2f5
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2021-04-06 14:17:24 +02:00
Fabian Kosmale 595b4e1a9b QList: Satisfy contiguous_range requirements
With C++20, there is a new iterator_category: contiguous_iterator, for
containers whose elements are stored contiguously in memory. In Qt 6,
QList satisfies this requirement.

However, we still need to tell the standard machinery about it. Step one
is to mark the iterators as contiguous_iterator; as that exists only in
C++20, we have to ifdef accordingly.
We also have to ensure that the iterators satisfy pointer_traits by
defining element_type due to how contiguous_range is specified. As this
runs afoul of LWG 3346, we check for known bad _GLIBCXX_RELEASE
versions.

Change-Id: I8c134544e694ba937e4d912393eb72fa75b49e3d
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2021-04-06 11:35:35 +02:00
Mårten Nordheim 9211d04730 QSemaphore: move suspect increment of waiter count
We might return false a few lines down, without decreasing the count.

Change-Id: I0a90c07f279860987e41539e9d5f3b5d2cb15207
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2021-04-06 09:55:14 +01:00
Alex Trotsenko 72d1a54763 QWindowsPipeReader: determine pipe state before signaling
The 'pipeBroken' flag must be updated before emitting the readyRead()
signal to avoid deadlock of waitForReadyRead() inside slot connected
to readyRead().

Change-Id: Ie393fdd594c6691da6609ea18307589b7157c624
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
2021-04-06 11:27:41 +03:00
Nico Vertriest 6cf92f1382 Doc: Fix link errors qtbase
Task-number: QTBUG-90662
Change-Id: I17147d149d9f222c142853805443aff94c5a5ff7
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2021-04-06 07:34:21 +01:00
Thiago Macieira 451fb66212 QThreadPool: let the started thread have the same name as the pool
If the pool has a name. This should make identifying threads belonging
to different pools easier in process-inspection tools.

Fixes: QTBUG-92004
Change-Id: Id2983978ad544ff79911fffd167225902efeb855
Reviewed-by: Samuel Gaist <samuel.gaist@idiap.ch>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
2021-04-03 16:15:29 -07:00
Ivan Solovev 33786e7b02 Fix Q_OBJECT_COMPAT_PROPERTY_WITH_ARGS when using the signal
This commit amends 4ceaf22bed.
Signal parameter was not actually used, even is the signal was
specified.
This patch fixes it and also introduces unit-tests for this issue.

Change-Id: I029d413644eb6a72af3bdce27cc5f5bcadfe946a
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2021-04-03 17:21:30 +02:00
Samuel Gaist bc00daae71 Add support to set thread priority to QThreadPool
Currently, QThreadPool's generated threads inherit the priority from the
thread they are created and that cannot be changed. This merge request
adds a property to QThreadPool so that the priority of the threads can
be different.

The default behavior does not change.

[ChangeLog][QtCore][QThreadPool] QThreadPool can now be configured to
use a different thread priority when creating new threads than the one
it inherits from the thread it was created in. This will only apply to
the threads started after the property is changed.

Fixes: QTBUG-3481
Change-Id: Ic98d4312d055a3357771abb656516ebd0715918d
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2021-04-03 09:14:55 +02:00
Thiago Macieira c2a09242c8 QGenericAtomicOps: allow pointer-sized non-atomic atomics
Change-Id: Id2983978ad544ff79911fffd1671f696b8a9ca35
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2021-04-02 11:12:17 -07:00
Alexandru Croitor 659817e287 CMake: Fix building multi-arch universal macOS Qt
Use the same approach we use for iOS, which is to set multiple
CMAKE_OSX_ARCHITECTURES values and let the clang front end
deal with lipo-ing the final libraries.

For now, Qt can be configured to build universal macOS libraries by
passing 2 architectures to CMake, either via:

  -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64"

or

  -DCMAKE_OSX_ARCHITECTURES="arm64;x86_64"

Currently we recommend specifying the intel x86_64 arch as the first
one, to get an intel slice configuration that is comparable to a
non-universal intel build.
Specifying the arm64 slice first could pessimize optimizations and
reduce the feature set for the intel slice due to the limitation
that we run configure tests only once.

The first specified architecture is the one used to do all the
configure tests.

It 'mostly' defines the common feature set of both architecture
slices, with the excepion of some special handling for sse2 and
neon instructions.

In the future we might want to run at least the Qt architecture config
test for all specified architectures, so that we can extract all the
supported sub-arches and instruction sets in a reliable way.

For now, we use the same sse2 hack as for iOS simulator_and_device
builds, otherwise QtGui fails to link due to missing
qt_memfill32_sse2 and other symbols.

The hack is somewhat augmented to ensure that reconfiguration
still succeeds (same issue happened with iOS). Previously the sse2
feature condition was broken due to force setting the feature
to be ON. Now the condition also checks for a special
QT_FORCE_FEATURE_sse2 variable which we set internally.

Note that we shouldn't build for arm64e, because the binaries
get killed when running on AS with the following message:

  kernel: exec_mach_imgact: not running binary built against
  preview arm64e ABI.

Aslo, by default, we disable the arm64 slice for qt sql plugins,
mostly because the CI provisioned sql libraries that we depend on only
contain x86_64 slices, and trying to build the sql plugins for both
slices will fail with linker errors.
This behavior can be disabled for all targets marked by
qt_internal_force_macos_intel_arch, by setting the
QT_FORCE_MACOS_ALL_ARCHES CMake option to ON.
To disble it per-target one can set
QT_FORCE_MACOS_ALL_ARCHES_${target} to ON.

Task-number: QTBUG-85447
Change-Id: Iccb5dfcc1a21a8a8292bd3817df0ea46c3445f75
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2021-04-01 18:14:59 +02:00
Shantanu Tushar 0592123a0c Add std::chrono overloads for QLockFile functions
This makes it convenient to use QLockFile for projects which are able to
use std::chrono to denote durations.

Change-Id: Ib4520f6142412bdefe659fccc1e6d15b81af2f25
Reviewed-by: David Faure <david.faure@kdab.com>
2021-04-01 15:38:08 +02:00
Qt CI Bot b3281eb6f4 Merge integration refs/builds/qtci/dev/1617269094 2021-04-01 11:38:27 +00:00
Lorn Potter 4972fdb350 wasm: add cmake build support
A few configure defines get changed:
QMAKE_WASM_PTHREAD_POOL_SIZE is now QT_WASM_PTHREAD_POOL_SIZE
QMAKE_WASM_TOTAL_MEMORY is now QT_WASM_INITIAL_MEMORY
QMAKE_WASM_SOURCE_MAP_BASE is now QT_WASM_SOURCE_MAP_BASE

device-option EMSCRIPTEN_ASYNCIFY=1 is QT_EMSCRIPTEN_ASYNCIFY=1

To create source maps for debugging. use
device-option QT_WASM_SOURCE_MAP=1

Task-number: QTBUG-78647
Change-Id: If9f30cd7fb408c386d6d69b5f7b1beecf1ab44b5
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2021-04-01 19:23:42 +10:00
Fabian Kosmale 29ef667a69 QObjectCompatProperty: Reintroduce operator=
This is a partial revert of a1a2d97e34.
Reason: The new design does not notify automatically anymore, so using
operator= is safe to use.

Change-Id: I6cb735e40c0da72d22fcc426423eb7830901e5f4
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2021-04-01 10:04:35 +02:00
Fabian Kosmale 4ceaf22bed QObjectCompatProperty: Emit signal in notfiy
There is no need to write emit and notify at the same time, as not
emitting after notify does not make sense.
This naturally only applies to properties with a changed signal.

Change-Id: I99ff7863a509262ad9d4f7c9c5afbc66fd37001c
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2021-04-01 10:04:31 +02:00
Fabian Kosmale 2ffb91ac59 QObjectCompatProperty: Require explicit notify
For QObjectCompatProperty, which allows to do basically anything in its
setter, it is actually easier to manually specify when the change should
become visible. This is in line with manually writing emit calls in the
old property system, and allows the preservation of class invariants.

Change-Id: I585bd3f25d722ca3fd721ead85fe73dbee26c5f6
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2021-04-01 10:04:27 +02:00
Qt CI Bot aa84de1afa Merge integration refs/builds/qtci/dev/1617226155 2021-03-31 23:39:10 +00:00
Alexandru Croitor f5f56caa39 CMake: Regenerate stale prev_configure.cmake files
Change-Id: I75d7f2f3d9b40ad392bb598b466fec4708b51a61
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2021-03-31 23:27:51 +02:00
Alex Trotsenko 007addc0cc QWinEventNotifier: migrate to new thread pool API
Change-Id: I2fb1ba7254ecfd502a22c706404f92dd1bc3a584
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
2021-03-31 22:52:22 +03:00
Qt CI Bot 5d5cc3c7c7 Merge integration refs/builds/qtci/dev/1617109351 2021-03-30 16:02:41 +00:00
Qt CI Bot 31c81e08c6 Merge integration refs/builds/qtci/dev/1617098611 2021-03-30 13:30:26 +00:00
Alexey Edelev 9466b3629a Add missing compile definitions to the resource object library
The resource object library must be compiled with the definitions
specified in Qt::Core. Missing the required definitions causes linker
problems when QT_NAMESPACE is defined.

Change-Id: If0ca20604e251822279e0d4906c47b94d3b4ceb4
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2021-03-30 14:32:28 +02:00
Qt CI Bot 7ae037bc82 Merge integration refs/builds/qtci/dev/1617094992 2021-03-30 12:22:15 +00:00