Commit Graph

49199 Commits

Author SHA1 Message Date
Mårten Nordheim
43aaf74f60 QXmlStreamReader: don't store pointers
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>
2020-11-11 16:34:50 +01:00
Eirik Aavitsland
7aa68ee6f2 Fix misidentification of some shearing QTransforms as only rotating
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>
2020-11-11 12:48:21 +01:00
Karsten Heimrich
bd3a1dd9c2 Doc: Update/scrub QString documentation
Fixes: QTBUG-86554
Change-Id: I3d40295115207c430ec30bbac6fb241bf897e5fa
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
2020-11-11 12:48:21 +01:00
Karsten Heimrich
15f55e9be5 Doc: Add Qt6 QDBus porting guide
Fixes: QTBUG-88027
Change-Id: Ic4fa2070aa7068a1d0ff02d43aa6a3d1d10db0d7
Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-11-11 12:48:21 +01:00
Shawn Rutledge
7ec2f38ec0 Remove QTest::lastMouseButton
Followup to b3e91b66b9

Change-Id: Icd7ceb8cb671705ab77641133d0d799ea091f1a3
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-11-11 09:12:35 +01:00
Mårten Nordheim
bbadd1b5c1 Add QByteArray::insert(qsizetype, const QByteArray &)
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>
2020-11-11 01:00:39 +01:00
Karsten Heimrich
059ca16aa0 Doc: Add Qt6 XML porting guide
Fixes: QTBUG-88026
Change-Id: I5f23e3ba984b7aaa326b713a03101797298c44d7
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
2020-11-11 00:05:10 +01:00
Volker Hilsheimer
ee025760cf Use QTRY_COMPARE in an attempt to make the test less flaky
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>
2020-11-10 23:05:23 +01:00
Tor Arne Vestbø
d04e117d3d cmake: Fix genex syntax error for iOS entrypoint
Change-Id: I09f8870b937b7effd547071530636c314d242a16
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-11-10 20:30:01 +01:00
Giuseppe D'Angelo
8780fbb2eb Build Qt (and client apps using it) with /permissive-
*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>
2020-11-10 20:01:49 +01:00
Shawn Rutledge
ef051a61f6 Rename remaining QEvent variables to m_ convention; init m_reserved
Change-Id: I08694657b7c9d2713d0cb33519698dbba3bfdffa
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-11-10 19:08:44 +01:00
Joerg Bornemann
88efeb9e25 CMake: Map configure -hostdatadir to INSTALL_MKSPECSDIR
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>
2020-11-10 18:06:54 +01:00
Andrei Golubev
bd6784b579 Simplify Q*ArrayOps emplace() signature
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>
2020-11-10 18:03:23 +01:00
Friedemann Kleint
ae7c3985f1 MinGW: Fix compile error in qlocale_win.cpp
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>
2020-11-10 17:08:19 +01:00
Alex Trotsenko
aefd414ce2 QWinEventNotifier: unlink from event dispatcher
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>
2020-11-10 17:56:51 +02:00
Maximilian Goldstein
0bfb39da85 resources_function.prf: Discard external path prefixes
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>
2020-11-10 16:55:07 +01:00
Alexandru Croitor
ba0895cf69 configurejson2cmake: Follow up fix to a regression
UnboundLocalError: local variable
 'skip_special_case_preservation' referenced before assignment

Change-Id: Ic7419e0bdd04a4251182d1a2616cd57e89e62432
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2020-11-10 16:54:53 +01:00
Christophe Giboudeaux
30ba185583 CMake: Allow using DESTDIR when installing documentation
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>
2020-11-10 16:54:42 +01:00
Shawn Rutledge
9fa071d3fe Replace ushort -> quint16 in event classes
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>
2020-11-10 16:53:31 +01:00
Shawn Rutledge
2f71d9d837 Silence "same window" warning when QPA doesn't give touch dest window
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>
2020-11-10 16:53:31 +01:00
Shawn Rutledge
4ccfe7b734 Reset the velocity Kalman filter when the mouse enters a window
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>
2020-11-10 16:53:31 +01:00
Assam Boudjelthia
73e64a98c6 Android: fix android java and templates targets with -developer-build
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>
2020-11-10 17:53:31 +02:00
Tor Arne Vestbø
4b063c8467 Move iOS entrypoint logic to entrypoint library
Change-Id: Ie0fc8368953a59d06a31847ed417bc3c35f29b90
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-11-10 16:53:31 +01:00
Tor Arne Vestbø
6e9a0f6688 Remove custom logic for writing entrypoint implementation pri
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>
2020-11-10 15:53:31 +00:00
Joerg Bornemann
30a9b045cc CMake: Implement configure -list-features
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>
2020-11-10 16:53:31 +01:00
Alexandru Croitor
a3b9e3459f CMake: Warn when building Qt with a generator other than Ninja
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>
2020-11-10 16:53:31 +01:00
Alexandru Croitor
fbf11e86ef CMake: Fix cmake tests for no-widgets and no-gui configurations
Task-number: QTBUG-86053
Change-Id: I108977546304f203f6e2b7e983bb909b76626a9f
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2020-11-10 16:53:31 +01:00
Assam Boudjelthia
0d6a14bbd9 Android: recommend against using ANDROID_ABIS inside the project file
Pick-to: 5.15
Task-number: QTCREATORBUG-24674
Change-Id: Iad6baa1af61d3d1a44f26cb9d51e3cb97d235707
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2020-11-10 13:23:09 +00:00
Alexandru Croitor
625bb2f76a CMake: Fixup outdated configure.cmake files
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>
2020-11-10 14:23:09 +01:00
Alexandru Croitor
67693b6cf8 configurejson2cmake: Allow skipping of special case handling
Useful when cleaning up configure.cmake files that might have outdated
content.

Change-Id: I3872e81b7e896de83c1f6635499316bdbe3acb16
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2020-11-10 14:23:09 +01:00
Alexandru Croitor
3792b55022 CMake: Fix qtbase cmake tests to pass when configured in-tree
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>
2020-11-10 14:23:09 +01:00
Joerg Bornemann
ba6175eb73 CMake: Fix missing resources in Windows debug DLLs/EXEs
When configuring a Windows build with NMC and
"CMAKE_CONFIGURATION_TYPES=Release;Debug", then with CMake 3.18.4 only
the targets of the main configuration would get the version resource
compiled in.

With 3.19.0 RC 2 the problem cannot be observed.

Work-around the issue by revisiting our work-around of another CMake
issue: use just one object library per target to embed win32 resources.
This works with both tested CMake versions and seems cleaner anyways.

Fixes: QTBUG-88267
Change-Id: I20f596ab669ae716c330d7aa60aa717b9e3e4aa7
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-11-10 14:23:08 +01:00
Joerg Bornemann
e990b649fa CMake: Make Release the main config of a -debug-and-release build
In configure we need to set the Release configuration first to make it
the main configuration.

Change-Id: I5fe744b0dcea009c4d672bf519b38c80c87475dd
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-11-10 14:23:08 +01:00
Fabian Kosmale
16d412da4c QSignalSpy: Use QMetaType instead of metatype id in initArgs
The RegisterMethodArgumentMetaType had been changed to take a QMetaType
instead of a type id in 0161f00e50.
Unfortunately, the usage of it in QSignalSpy was missed. This patch
adjusts the metacall to correctly use a QMetaType.
Moreover, use parameterMetaType instead of parameterType to benefit from
metatypes which are already resolved at compile time.

Task-number: QTBUG-88260
Fixes: QTBUG-88356
Change-Id: Id8fa46581a005d62818971ea24d8aa2e39dcd6d0
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-11-10 11:23:55 +01:00
Shawn Rutledge
f95691b8af Move the remaining QSinglePointEvent ctor to protected; add source arg
QSinglePointEvent no longer has public constructors: we don't expect
users to construct instances, because it's conceptually an abstract
base class (even though some subclasses don't add more storage).
We give it a Qt::MouseEventSource argument so that m_source won't
need to be set in other subclasses. There was some hope of removing
MouseEventSource completely, but it hasn't been done, for the sake of
avoiding SC breaks.

Change-Id: Iea2946699726fb7ac98757b7b8f1b7cfdccc1449
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2020-11-10 10:23:55 +00:00
Shawn Rutledge
48219c8231 Remove code for non-enhanced mouse events
Followup to a37785ec76.
The mouse button that caused the event and the current state of all
mouse buttons must always be given separately in QPA mouse events.

Task-number: QTBUG-59277
Task-number: QTBUG-62329
Task-number: QTBUG-63467
Change-Id: I27209b3730baef325ce0f1c4d3778930e72d5465
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
2020-11-10 08:21:08 +01:00
Andy Shaw
5f2b53f13c Cocoa: Allow CMD+H to hide the application when a tooltip is visible
Since native applications allow CMD+H to hide an application when the
tooltip is visible then we should do too. Other popup windows will
still block the call.

Pick-to: 5.15
Fixes: QTBUG-82626
Change-Id: Ieac86d6b3cb2152a3ba82d8bd850f13bfeedb7c8
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-11-10 04:24:45 +01:00
Joerg Bornemann
5b136abd21 CMake: Fix installation errors in multi-config build
In multi-config builds (which equals the debug-and-release feature) we
exclude tools of the non-main configurations from the default build.
But we still create installation rules for them.  Mark those as optional
to avoid "cmake --install" yielding errors if those tools weren't built.

Fixes: QTBUG-85411
Change-Id: Ic2d3897d1a1c28a715d9a024ec8606fff00e0315
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-11-10 04:24:28 +01:00
Giuseppe D'Angelo
b8b75cdcfa Q_PRIMITIVE_TYPE: improve the documentation
A key piece of information missing from Q_PRIMITIVE_TYPE
documentation is that for them value initialization must equal
memset()ting with zeroes. A type like QPoint is primitive
because `QPoint p;` is initialized to (0, 0), but a type like
QSize is movable (and NOT primitive) because `QSize s;` is
actually initialized to (-1, -1). Amend the docs.

Change-Id: I121684810da46be5d0579c7d3de945149390a32a
Pick-to: 5.15 5.12
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-11-09 23:25:54 +01:00
Shawn Rutledge
650b436635 Improve QPointerEvent qDebug operators
Use the property=value format consistently for the QPointerEvent types.
Abbreviate property names for compactness, but show more info.
Omit device seatName(), pointerType(), capabilities(), maximumPoints()
and uniqueId() when they are uninteresting.  In the case of uniqueId()
it's uninteresting when it's not valid (-1) rather than when it's 0.
Add QMouseEvent::scenePosition().

Change-Id: Ia076c5958e8f7032929517401d332b07d2fd0e78
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-11-09 23:24:58 +01:00
Shawn Rutledge
d8a2ffcea2 Fix reordering warning in QEglFSIntegration
Amends 47bcc4dd4b : m_kbdMgr was moved
up to the protected section, so now it must be inited first.

Change-Id: Iad28900affa7ab67122c4a6d1ec9161e2e1c7697
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2020-11-09 19:28:02 +01:00
Alexey Edelev
a1ce164d74 CMake: Make zstd config-based lookup quiet
Make zstd config based lookup quiet and check for version variable
as required for ZSTD target.

Add IMPORTED_LOCATION by default for pkg-config based search.
Expect that select_library_configurations will set correct value
for ZSTD_LIBRARY.

Fixes: QTBUG-88091
Change-Id: Ia5079154ce4fc4eefbc0931317219b5ca0f3f82f
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-11-09 17:47:57 +00:00
Alexey Edelev
76230d9879 CMake: Add handling of PLUGIN_EXTENDS for generic plugins
Modify pro2cmake converter to add extra argument to
qt_internal_add_plugin. DEFINE_IF FALSE is added to generic plugins
those had "PLUGIN_EXTENDS = - " specified in .pro files.

Fixes: QTBUG-87861
Change-Id: I9269df19a32a088f5261f50e7ffff6d29c3d605f
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-11-09 18:47:51 +01:00
Michal Klocek
632da28e9c Add new way to mess up projects with QMAKE_INSTALL_REPLACE
Qmake supports currently:

 * QMAKE_PRL_INSTALL_REPLACE,
 * QMAKE_LIBTOOL_INSTALL_REPLACE
 * QMAKE_PKGCCONFIG_INSTALL_REPLACE

Introduce QMAKE_INSTALL_REPLACE, where more sed magic
can be put in action in more generic manner.

replace_foo.filename = foo.h
replace_foo.matches = /bad/looking/path/to/foo
replace_foo.replace = /awesome/looking/path/to/foo
QMAKE_INSTALL_REPLACE += replace_foo

Pick-to: 5.15
Task-number: QTBUG-87154
Change-Id: Ie43d0ab4f1d4575bbf6279eb36383f38047484d9
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2020-11-09 19:13:48 +02:00
Tor Arne Vestbø
ff170962d4 Don't rely on the module.pri for the entrypoint linking to the library
Depending on the presence and behavior of HEADER_MODULE/header_module
in CMake and qmake land, the module.pri might end up with an empty
module line, which means adding the module via QT_PRIVATE += entrypoint
will not link to the static library.

To avoid this problem we write an explicit module entry (QT.foo.bar)
into the same module.pri file as the one generated by qt_module,
where the auto-generated one has header_module enabled, and hence
no link behavior, while the manually written entry has a module
component, and will ensure linkage to the static library.

Change-Id: Ib98484f74410fab45c4d109f3610028200fba0c5
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-11-09 18:08:06 +01:00
Tor Arne Vestbø
c2e1a773e0 Don't add module pri library entry for header modules
The QT.foo.module entry is used for linkage, so we shouldn't
add it for header only modules.

Change-Id: Ibb6e7ab08083ccab11d7e060f35c54153e3751c0
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-11-09 18:08:02 +01:00
Andrei Golubev
250b69ace4 Fix QArrayDataOps generic and relocatable emplace()
Emplace() implemented with std::rotate is just awful on my system
(Ubuntu 18.04 GCC 7.5.0). Custom code is much faster, so go for
it. Cannot really use insert() code, which is also fast, because
it doesn't forward-reference values but copies them always

Changes in performance (approximately) for emplacing 100k elements
into the middle:
Complex 7600ms -> 1700ms
Movable 7600ms -> 200ms

Task-number: QTBUG-86583
Change-Id: If883c9b8498a89e757f3806aea11f8fd3aa3c709
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-11-09 17:36:31 +01:00
Lars Knoll
9ede51d214 Avoid calling memmove() if it's a noop
This speeds up some of the operations.

Change-Id: I5195ba79df92ead8e8003aa82681703e8c3afe99
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-11-09 17:36:17 +01:00
Andrei Golubev
b3a5ad40a7 Move existing items in generic erase instead of copying them
Use std::move() in QGenericArrayOps::erase() when assigning over the
to-be-deleted range

Task-number: QTBUG-86583
Change-Id: Ib28c5c1f1593beba5fce6841dd6fcecfdfb166ad
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-11-09 17:36:13 +01:00
Lars Knoll
1d309843a1 Move existing items when inserting instead of copying them
Use move operations to move existing items instead of copying
them. This speeds up insertions for non relocatable types
significantly (e.g. for std::string).

Change-Id: I308f381ac2242e50505f02675c2d2afbf21069d1
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-11-09 17:36:09 +01:00