In order to demonstrate the new functionality, changed the example to
download the images from the network, scale and show them by attaching
different continuations to QFuture. Because QtConcurrent::map is not
used anymore, removed the suspension functionality (supporting
suspension of download would complicate the logic).
Task-number: QTBUG-87205
Change-Id: I5a48b63195d28025ae8c5de28bc6d6178dad03db
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
This reverts commit 9968a211f9.
The PKG_CONFIG_* environment variables should be added by the user
environment, preferably by the toolchain file.
Apparently, the change was added for Android before we turned off
pkg-config for Android. It is not needed anymore.
Change-Id: Ieeed09ae53a606c85d4937f463286b5b0f76bde9
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
- Exclude forwarding headers to Qt GUI as they caused the headers
to be parsed twice.
- Drop documentation for removed example
Task-number: QTBUG-86295
Change-Id: I08eb46b7c7f813f103cc545f931896be99a3ccec
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
Use a custom module header for the documentation build that pulls in
also QtOpenGLWidgets' headers.
Fixes: QTBUG-88275
Change-Id: I4e1144b179a124b01114de24cc183289fa05fb33
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
`Container` is a forwarding reference, so use std::forward.
The deduction for l-values wouldn't make this code even compile
with std::move.
Change-Id: Icc9b81a8ad1c76ef1e2ef0f08e7a86b0b4c4ce59
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Threads that unlock and lock a mutex at the same time perform the following
operations:
Thread 1 Thread 2
-------- --------
QBasicMutex::lockInternal() QBasicMutex::unlockInternal()
d_ptr.testAndSetOrdered(..., d) d = d_ptr.loadAcquire()
d->waiters.loadRelaxed(); (1)
d->waiters.fetchAndAddRelease() (2)
d_ptr.testAndSetRelease(d, 0) (3)
d->derefWaiters() (4)
d->waiters.testAndSetRelaxed(...) (5)
if (d != d_ptr.loadAcquire()) (6)
d->wait()
The operation (1) isn't serialized with the operation (6) so its memory
effect may be observed before the effect of the operation (1). However,
if memory effects are observed in the following order: (6) -> (1) -> (2)
-> (3) -> (4) -> (5) then Thread 1 doesn't notice that Thread 2 updates
d_ptr and goes to sleep with d pointing to a stale object, this object
isn't reachable since d_ptr is zeroed so Thread 1 cannot be woken up.
The patch adds the "acquire" barrier into the operation (1) so that it
cannot be reordered with the operation (6).
Fixes: QTBUG-88247
Pick-to: 5.15 5.12
Change-Id: I1d0c405c0bf5080ec1815d351b9b4b75efeab21a
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
In many cases (e.g. relocatable and pod), generic version is more
expensive. Let's not expect array data ops to only get QADP iterators
as input. Instead, reject generic version for any const T* -convertible
iterator and force compiler to select copyAppend(const T *b, const T *e)
as a suitable overload
Change-Id: I47a09d35a8ff15322381c2aa28258bfc7deebbad
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
QGraphicsSceneEvent carries a widget pointer, and we can add a new
event
type. Assert that QGraphicsScene doesn't get Leave events from
elsewhere.
This was the only "usage" of QEvent's d-pointer in Qt, so with this gone
we can reduce the size of QEvent by 8 bytes.
Change-Id: I0513daf742de9084d0469d55b7a7f41b667e8081
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
According to Microsoft's docs, /OPT:ICF is enabled by the
linker by default unless /OPT:NOICF or /DEBUG is specified.
If we are in RelWithDebInfo mode, /DEBUG is passed to the
linker to generate debug symbols, however, it caused the
identical COMDAT folding be disabled. We now pass /OPT:ICF
to the linker explicitly to prevent this.
[1] https://docs.microsoft.com/en-us/cpp/build/reference/opt-optimizations?view=msvc-160
Change-Id: I02099edb81034ace7bb19f1164d57829e3979a5f
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
We need to handle the possibility of versioned dep (Qt6::Foo).
Change-Id: I66797dbc59f00500892958e9c99c4555cddcb980
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
If not, the resulting dep would end up as 'Foo>', but we need 'Foo'.
Change-Id: I246b66eb0ac6b076eea200c4d1ad84bba8ed179c
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
The original non-prefixed mapping is kept for qt3d's assimp
library usage.
Adapts to b14b14e9194708cf02df1149bd735f6ce245c3e4.
Change-Id: I1beb48854ef3088a23e1d67ff855e4b7427024bb
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
The INSTALL_LIBDIR value is only set when doing a Qt build. Use it
when available, otherwise default to a more 'hardcoded' value.
Change-Id: I96b7b8094c699de59ffaff00cd677d8322c474c3
Reviewed-by: Christophe Giboudeaux <christophe@krop.fr>
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
They were pointing into the QHash structure which could
be invalidated on insert if growing was needed. This
caused some user-after-free issues.
Indexing into the QHash is quite fast, so let's just
store the name and a pointer to the QHash to do that.
Fixes: QTBUG-88246
Change-Id: If7f9b1c6ea7557c5bd0869b42b1b84aa824cc6ce
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
The dot product used rows instead of columns.
Pick-to: 5.15 5.12
Fixes: QTBUG-87984
Change-Id: I922f67ed0fa9a4f88aa4e9fc6d3c09f8dda21688
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
For consistency with append and prepend we should have an overload for
insert() as well. This also enables insert() to be used with
QStringBuilder, i.e. qba.insert(2, qba2 + "abc").
Because simply adding a const QByteArray & overload causes ambiguity
with QByteArrayView we also add a const char * overload.
Add some extra test-cases. Two for QByteArrayView since it's not
directly tested anymore. One for inserting self directly.
Change-Id: Ieb43a6a7d1afbb498bc89c690908d7f0faa94687
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
The test function only runs on X11, and this might help with the
asynchronous nature of the client/server architecture, also for
drag'n'drop.
Change-Id: I38db9104e304e57c36f84932d13f8dfae7452883
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
*Not* using /permissive- exposes Qt and client apps to interesting
bugs and/or build failures, (e.g. QTBUG-87225, or
19b5520abf). We demand strict
conformance by any other compiler, it's time to demand it from
MSVC too.
The Windows headers themselves are clean starting from the
Windows Fall Creators SDK (10.0.16299.0), and moreover Qt 6 will
drop WinRT; therefore, the comment in the mkspecs does not apply
any more.
Since /permissive- implies /Zc:referenceBinding, drop that
option. The other implied options are set on MSVC < 2017,
but I leave them in to avoid tinkering with the fragile lists
of C/C++ flags.
Rename the CMake internal helper function to better describe
what it does.
Fixes: QTBUG-85633
Fixes: QTBUG-85637
Fixes: QTBUG-85635
Fixes: QTBUG-88244
Change-Id: Ie03fddb61aa066fdc14b7231c22e7108b4a02fbb
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
In the qmake-based build, the hostdatadir is the directory where "Data
used by qmake" is located. In the CMake build the equivalent is
INSTALL_MKSPECSDIR. Create the mapping accordingly.
Fixes: QTBUG-88211
Change-Id: I9e3d1af24bc7f41333ef2269fced5ab3fcfa848d
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Template type never would've worked, really. We relied everywhere
that 'iterator' is comparable to our iterators (in generic version
it should be even the same type - see std::rotate API) and the
iterator type is castable to T* in POD and Movable cases, so
simplify that, no need for extra template boilerplate
Change-Id: I263ae2ba90ca27abceca01fcc21d80a350bbd743
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Cast enumerations to ushort, fixing:
src/corelib/text/qlocale_win.cpp: In member function 'virtual QVariant QSystemLocale::query(QSystemLocale::QueryType, QVariant) const':
src/corelib/text/qlocale_win.cpp:765:34: error: enumeral and non-enumeral type in conditional expression [-Werror=extra]
As a drive-by, fix deprecation warning about QVariant::type().
Amends 098f43fdd2.
Change-Id: I2adc9833c6d6d9e9d2500f0b92b25cb5d38b583b
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Instead of multiplexing all notifications into a single Qt event for
the event dispatcher, we can send 'WinEventAct' event directly for each
notifier which activated. This trick improves the performance (esp.
on a large number of events) and allows us to remove notifiers handling
from the event dispatcher completely.
As an alternative to sending Qt events, use of Windows' APC queue in
conjunction with waking up the Qt event loop from within the Windows
thread pool has been considered. However, that would lead to signal
emission asynchronous to the Qt event loop's operation, which is not
acceptable.
Thanks to Oswald Buddenhagen for the proposed idea.
[ChangeLog][QtCore][QAbstractEventDispatcher] The
{un}registerEventNotifier() member functions have been removed.
QWinEventNotifier is no longer needed to be registered in the
event dispatcher.
Change-Id: I140892fb909eaae0eabf2e07ebabcab78c43841c
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
qtdeclarative's QtQml module adds a dynamically generated qmldir file to
its RESOURCES which is located outside the source directory.
Previously this caused qmake to generate an invalid alias for the qmldir file.
Now the relative path is discarded properly.
Fixes: QTBUG-88204
Change-Id: Ia689d9d110db092cee595bf44fcbb6d57783fded
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Previously, QtDocsHelpers.cmake was invoking CMake to copy
files or directories instead of using installation targets.
This resulted in DESTDIR being ignored.
Now we create installation targets and ask CMake to
install them.
Change-Id: Idbc79d47a37f9ca865d28543bdbbdde3ba448fa3
Fixes: QTBUG-87382
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
We used quint32 for 32-bit types and ushort for 16-bit ones,
but using explicit bit sizes looks more consistent.
Change-Id: I3106dd6ecb2367fef6f8012c28266e1b4b1abf4b
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Platform plugins should dispatch events to specific windows when
possible; but eglfs currently doesn't do that, so this warning was
printing for many touch events. Now we print it only if the window that
the platform plugin says *should* handle a touch move or release is
non-null and *different* than the one that actually handled the press.
Fixes: QTBUG-88192
Change-Id: Ia3271b5e67902dcf8a1cdae605adec470c3cfd89
Reviewed-by: Samuli Piippo <samuli.piippo@qt.io>
If we always tracked the mouse, we could always have accurate velocity;
but most of the time, when the mouse enters a top-level window, we don't
know how fast it was moving at that time, unless the application has
requested a window-system mouse grab. It's better to assume that any
residual velocity stored in the persistent QEventPoint instance (in
QPointingDevicePrivate::activePoints) is inaccurate, and just start over
from zero. Especially for the sake of autotest sanity.
Task-number: QTBUG-88346
Change-Id: Id6c4fbffb8a86a8ab50a09f09aa62125d10155b4
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
On Windows with -developer-build java and templates files are not copied
properly, this makes sure to copy the files and dir for both targets.
Also, avoid creating a a deployment-settings.json file by adding
"TEMPLATE = aux".
Fixes: QTBUG-87627
Pick-to: 5.15
Change-Id: Iae269c3180a7b6d904fdba2e69fb3f815bbb1211
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Trying to keep the logic self-contained resulted in a race
condition during 'make install', even if the two sub projects
were CONFIG+=ordered.
The approach is now similar to what we have on the CMake side,
where the ldflags and defines end up in the 'interface' module.
Change-Id: Id08a3ca12da8e7fc36ad76124b52ca4c79aebe3b
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Extend qt_configure_get_padded_string to make the feature list look like
qmake's.
Fixes: QTBUG-88144
Change-Id: I714f2b2f3537b506365a03b5b6bc3413e9cab167
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
For now, we only support building Qt with the Ninja generator (and
Ninja Multi-Config).
Issue a warning when a different generator is used.
Allow opting out of the warning by passing
-DQT_SILENCE_CMAKE_GENERATOR_WARNING=ON.
Change-Id: I5faa5b0ca5fd42efc090ad2ccf4f896bd77e50ca
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Some outdated changes don't get removed when using special case
preservation, so remove them manually.
Change-Id: Iba1481ab9a924c3031bd5ce394d5183a5393f146
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Useful when cleaning up configure.cmake files that might have outdated
content.
Change-Id: I3872e81b7e896de83c1f6635499316bdbe3acb16
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
As opposed to standalone tests.
The problem is that 4 of the cmake failbuild tests use try_compile as
an indirection layer to configure /another/ project which is actually
the test.
That project needs to know the location of Qt. To do that, a
FindPackageHints.cmake file is included and the variable it sets is
passed to find_package() HINTS option. That's enough to find a
specific module, but not any dependent Tools packages.
Work around that by adding the Qt location to CMAKE_PREFIX_PATH in the
included FindPackageHints.cmake file.
The problem does not happen in standalone tests, because the
Qt location ends up being propagated via the qt toolchain file, which
does get inherited by the compile tests (albeit in a weird way, where
a reconfiguration still shows CMAKE_PREFIX_PATH to be empty).
Change-Id: I1f7ce940fd31678b46c0356edf6581e523cb885a
Fixes: QTBUG-86963
Reviewed-by: Andreas Buhr <andreas.buhr@qt.io>
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>