Commit Graph

49357 Commits

Author SHA1 Message Date
Giuseppe D'Angelo
784a290c4b QFileInfo: mark constructors as explicit
These look like leftovers (API flaws).

Construction of QFileInfo from QString (or similar) should be not
implicit, as QFileInfo construction is expensive (might hit the file
system), and this may have users overlook APIs (for instance build a
QFileInfo out of QDirIterator::next(), instead of using ::fileInfo();
using QDir::entryList instead of entryInfoList; etc.).

Leave an opt-out mechanism to ease porting.

Fix a handful of usages around qtbase, with at least a couple of them
likely to be actual "sloppy" code.

[ChangeLog][Potentially Source-Incompatible Changes][QFileInfo] Most
QFileInfo constructors are now explicit. The
QT_IMPLICIT_QFILEINFO_CONSTRUCTION macro is provided to keep old code
working.

Change-Id: Ic580e6316e67edbc840aa0c60d98c7aaabaf1af6
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-11-15 18:30:16 +01:00
Giuseppe D'Angelo
1869615fc9 QChar: make construction from integral explicit
QChar should not be convertible from any integral type except from
char16_t, short and possibly char (since it's a direct superset).

David provided the perfect example:

  if (str == 123) { ~~~ }

compiles, with 123 implicitly converted to QChar (str == "123"
was meant instead). But similarly one can construct other
scenarios where QString(123) gets accidentally used (instead of
QString::number(123)), like QString s; s += 123;.

Add a macro to revert to the implicit constructors, for backwards
compatibility.

The breaks are mostly in tests that "abuse" of integers (arithmetic,
etc.). Maybe it's time for user-defined literals for QChar/QString,
but that is left for another commit.

[ChangeLog][Potentially Source-Incompatible Changes][QChar] QChar
constructors from integral types are now by default explicit.
It is recommended to use explicit conversions, QLatin1Char,
QChar::fromUcs4 instead of implicit conversions. The old behavior
can be restored by defining the QT_IMPLICIT_QCHAR_CONSTRUCTION
macro.

Change-Id: I6175f6ab9bcf1956f6f97ab0c9d9d5aaf777296d
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-11-15 14:41:05 +01:00
Andreas Buhr
1aec96bffd update KDE-ECM CMake modules to include fuzzer sanitizer
Updates one 3rdparty CMake file from
https://github.com/KDE/extra-cmake-modules to include support for
fuzzing.

Task-number: QTBUG-88429
Change-Id: I19e7ed3c5602c34ba4b86e6b0df2ea3047c7c9e6
Reviewed-by: Robert Loehning <robert.loehning@qt.io>
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-11-14 10:05:20 +01:00
Allan Sandfeld Jensen
bf820bd3e2 Fix c++20 builds
Change-Id: I5c44fd72fea9bf1a5aafefa2dfd935295a519819
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-11-14 09:28:37 +01:00
Volker Hilsheimer
8a0a43bdaa Inline trivial getters for QEvent subclasses
Change-Id: Ic0ee4f3e311e1068d23796cee4fe58008a2a8114
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2020-11-13 23:28:39 +01:00
Bartlomiej Moskal
64d62c53c1 Android: Treat ACTION_CANCEL as TouchPointReleased
If TouchPointPressed was previously send and there is no
TouchPointReleased, we are exposed to uncorrectly handled touches
by application.

Some Android devices can recognize hand gestures. In some case the
gesture may be handled by Android System. In this situation
ACTION_CANCEL MotionEvent is delivered

ACTION_CANCEL - from Android specification:
-"Occurs when the parent takes possession of the motion, for example
when the user has dragged enough across a list view that it will start
scrolling instead of letting you press the buttons inside of it"
-"The current gesture has been aborted. You will not receive any more
points in it. You should treat this as an up event, but not perform
any action that you normally would"

If ACTION_CANCEL appears it means that ACTION_UP will not be delivered
to application. That is why ACTION_CANCEL need to be treat as
TouchPointReleased event.

Fixes: QTBUG-72110
Pick-to: 5.15
Change-Id: I8f32930cdb424b7530adc87b8334ac48a3bb9d57
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
2020-11-13 21:00:44 +01:00
Jarek Kobus
f4edc44265 Update qclass_lib_map.h according to split of svg module
Fixes: QTBUG-88259
Change-Id: Ibda15aabe2c42dd6b59f5a11d18abb154c176526
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2020-11-13 20:58:02 +01:00
Andreas Buhr
2b49b01aa3 Blacklist authenticationCacheAfterCancel on Ubuntu 20.04
The test authenticationCacheAfterCancel was the only one to fail
in recent COIN runs. This patch blacklists it on Ubuntu 20.04.

Task-number: QTBUG-88417
Change-Id: Idc85499da82336d291d9a90ecb941810a0e6c935
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-11-13 20:56:45 +01:00
Jan Arve Sæther
600b7bfa89 Remove some code checker issues (L218 & L243)
An addition, avoid code duplication.

Change-Id: I26d1d8d65ba330a2024eb5c17c3bceb21e014200
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-11-13 20:31:22 +01:00
Sona Kurazyan
2bce62a318 Conditionally disable code snippets that depend on cxx11_future
Fixes: QTBUG-88392
Change-Id: Ida215253fdcad66a5a67084d3ff6781583101859
Reviewed-by: Tony Sarajärvi <tony.sarajarvi@qt.io>
2020-11-13 20:31:22 +01:00
Andreas Buhr
1c4ddbafbb Remove unused variable to fix build with clang-10
Change-Id: I800df8184b3a713b27c71b6303b98b760a4dfc83
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2020-11-13 20:14:19 +01:00
Li Xinwei
215400e153 CMake: Install pdb files to proper directories in multi-config build
In multi-config build, for different configs, the pdb files of EXEs
should have different installation directories.

For example, when CMAKE_CONFIGURATION_TYPES=RelWithDebInfo;Debug,
<build_dir>/bin/moc.pdb will be installed to <install_dir>/bin/moc.pdb.
<build_dir>/bin/Debug/moc.pdb should be installed to
<install_dir>/bin/Debug/moc.pdb, not <install_dir>/bin/moc.pdb.

Fixes: QTBUG-88268
Change-Id: Idc7c92ca8d44bb81d990656af2b309306a4f5c6b
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-11-14 01:05:08 +08:00
Volker Hilsheimer
654156fb79 QItemSelection: Use public constructor from baseclass
Addresses code review comment.

Change-Id: I51c1d790217346358e15ed5ca750ea397a765406
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-11-13 18:05:08 +01:00
Timur Pocheptsov
9662ff67ce tst_qsslkey - handle QT_NO_SSL properly
The recent change handling missing elliptic curves introduced a problem
for '-no-ssl' configuration/build. The first version had some protection,
but it was openssl-specific and required a private feature, thus was
removed. Now the real ifdef must be with QT_NO_SSL

Fixes: QTBUG-88238
Pick-to: 5.15
Change-Id: I6fba26d6ab63850e1468e76f8b234703255a026c
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-11-13 18:05:08 +01:00
Eskil Abrahamsen Blomfeldt
d8efe51303 Update Qt OpenGL docs and add porting docs
This fleshes out the Qt OpenGL documentation, since this
is now a first class citizen and no longer a compatibility
module. It also adds Qt OpenGL-related info on porting
to Qt 6.

Fixes: QTBUG-88150
Change-Id: I85fcaa2eb5ae574416dcebcc0104bf97428ff42d
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2020-11-13 10:08:49 +01:00
Andreas Buhr
c87692a48b remove unused variables and parameters to fix compilation with g++-10.2
The changes in 94dd2cebdc,
"Remove Qt4Compatible painting" left some unused variables and
parameters. This leads to warnings which are treted as errors and
thus inhibit a successful build with g++-10.2. This patch removes
them and thus enables building with g++-10.2 again.

Change-Id: I5f83aa8ec8706c3e783540f5116f455ea8fe44c2
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-11-13 10:08:49 +01:00
Allan Sandfeld Jensen
1c56ff73aa Fix scaling of basic patterns under HiDPI
The dense patterns should not be non-smoothly scaled, just repeated
more.

Change-Id: I869556039ea1c91773bf2bc83d236b4592bcfc66
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2020-11-13 10:08:49 +01:00
Dimitrios Apostolou
4e935e35f1 Avoid false positives in Clang static analyzer
This assert should avoid three null-pointer dereference warnings, that
get flagged later in the same function, assuming that worker is null.

Change-Id: I1bf521fa335ee14b8ac98e872f31ef704f386efe
CodeChecker-report-hash: 38b39301a55fdb09bb0ec7cd43aa4f5e
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2020-11-13 01:17:30 +01:00
Volker Hilsheimer
062ba97f86 Drop the d-pointer of QEvent
It's not been used ever since it was added in the Qt 2 days, other than
a hack in QGraphicsView that could be solved more elegantly.

With this change, QEvent is only 16 bytes large, which is nicely aligned
with C++'s default operator new alignment, and we still have
plenty of bits (plus an unused bool) left for extensions.

Change-Id: If9376d90b92983db7fc12575f3893064a1797adf
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2020-11-12 22:38:29 +01:00
Volker Hilsheimer
d5ae51e0f5 Clean up and pack data members of QEvent classes
Make sure all bits reported by sizeof for the most important public
event classes are used optimally.

QEvent is 24bytes large due to default alignment in C++, so we might
just as well use bool instead of bitfields for the most important
data members. This generates less (and thus smaller and faster) code,
and we still have plenty of bits available for future needs.
Default the copy constructor and assignment operator, the assert and
tracing seem to be relics from the Qt 3/4 days.

Note: QEvent's d-pointer is currently unused, with the exception of a
hack in QGraphicsView. Removing that would save another 8 bytes
through the entire event hierarchy.

For the new classes in the QInputEvent hierarchy, apply the same
principle. Allocate bits in QInputEvent and QSinglePointEvent to fill
the 8-byte aligned space. Using some of those bits for QMouseEvent
and QWheelEvent makes sure we don't increase the size for those in
spite of additionally reserved bits.

As a result of this, several QInputEvent and subclasses become 8 bytes
smaller on clang and gcc (with the exception of QNativeGestureEvent)
while at the same we have more space for future extensions.

The sizeof's for the various classes on different compilers produce
these before and after result:

                   clang +/- gcc +/- msvc +/-
QEvent               24   0   24  0   24   0
QInputEvent          56  -8   56 -8   48   0
QPointerEvent        80  -8   80 -8   72   0
QSinglePointEvent    96  -8   96 -8   88   0
QMouseEvent          96  -8   96 -8   88   0
QTabletEvent        112  -8  112 -8   96 -16
QKeyEvent           104  -8  104 -8   96   0
QNativeGestureEvent 120   0  120  0  120   0
QWheelEvent         112  -8  112 -8  112  -8

So, with this change we save 8 bytes on gcc and clang for many
event types, esp on Linux systems.

As a drive-by: replace ulong with quint64, make QTabletEvent data
floating point, and rename some variables for clarity.

Change-Id: I4cf81c8283262cbf59ee3fb7064a59837332ced7
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2020-11-12 22:38:25 +01:00
Assam Boudjelthia
090efe6b0e Android: fix configure help for --android-abis
Qt 6.0 doesn't support multi-abi builds.

Change-Id: Ic944460d8299d98b6003d12a3c7a33bf7e619db9
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-11-12 23:11:40 +02:00
Alexey Edelev
558f5a2d7b CMake: Add support for -binary option for generated resources
Add handling of -binary flag in qt6_add_resources for generated
resource file variant.

If -binary argument is provided in OPTIONS section of
qt6_add_resources function, it will be passed to rcc as argument.
File path to output .rcc could be additionally specified by
DESTINATION argument. Extra target generated_<resource_filename>
will be added to project's 'all' set.

Implement tests for new functionality.

Fixes: QTBUG-87644
Change-Id: Id1313da499d86f82859d1757c3cfae2d84e894d4
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-11-12 22:11:37 +01:00
Assam Boudjelthia
29b17fa335 CMake: fix running Android tests
Android *.so files need to CXX visibility to default after
qt_set_common_target_properties() which was setting it to hidden.

Also, pass the correct androidtestrunner arguments for cmake check
target

Fixes: QTBUG-88228
Change-Id: Ia29cdc9e65153c9669f3ec06f74a46f8fcd8c507
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-11-12 23:11:35 +02:00
Tor Arne Vestbø
1777ddc234 cmake: Remove indirection via Startup target for EntryPoint
The EntryPoint interface target now contains all the logic
for what flags and optional static libraries to add when the
entrypoint is enabled.

The target property QT_NO_ENTRYPOINT can be used to disable
the entrypoint.

Change-Id: I9b14ff729366cd6307789c969ebd4b2ca19de77d
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-11-12 18:43:43 +01:00
Sona Kurazyan
4cc2196f6a Don't highlight the QtConcurrent progress dialog example
Change-Id: Iaccfc5b8d30f6903c5d27b5ed379d1ca364f7c69
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-11-12 15:25:07 +01:00
Sona Kurazyan
1e9784e6a2 Conditionally disable tests that depend on cxx11_future flag
Fixes: QTBUG-88392
Change-Id: I33b8ffd72be8a653e0923ef1e57305ffaf6b0428
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-11-12 15:25:07 +01:00
Morten Johan Sørvig
e4ee001dea Document physicalDotsPerInch high-DPI behavior
The values are in device-independent dots, which may
be unexpected.

Task-number: QTBUG-62649
Change-Id: I85d0e3dd6bd428dd351ebf22281b1f4d9a1b2dc4
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-11-12 16:25:07 +02:00
Morten Johan Sørvig
8421a1f16d Document physicalDotsPerInch high-DPI behavior
Add note to the member function documentation, in
addition to the class documentation.

Task-number: QTBUG-62649
Change-Id: I5cce6c06b58e70ef6c051d63c2901b219fa6d6b9
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-11-12 16:25:07 +02:00
Morten Johan Sørvig
24239aef35 QToolTip: don’t close again on Close event
Prevent recursion: hideTipImmediately() calls QWidget::close(),
which will soon start calling QWindow::close(), which
will send another close event.

Fix this by calling hideTipImmediately() only for Close
events not targeted for the tip label.

Task-number: QTBUG-46701
Change-Id: I6fd373ce13aed860b0d4836d5fbf470374ed2543
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-11-12 14:25:07 +00:00
Andy Shaw
d03415b7eb Doc: Update the SQL types documentation with regards to the double types
Pick-to: 5.15
Fixes: QTBUG-88198
Change-Id: I61b276ad5f2209a874c6b8bcf04ccffd23e3125d
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-11-12 14:25:07 +00:00
Andrei Golubev
9c51177564 QStringBuilder: change int to qsizetype
We should use qsizetype when interacting with QString/QBA to avoid
subtle overflow bugs and int limitations

Change-Id: I4ae5ea98a72c6283c7dca0ecfa94cc1669c9b446
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-11-12 15:25:06 +01:00
Volker Hilsheimer
e796857abb Stop copying events in tests
It's unnecessary, and copying QEvents is a bad practice since it's a
polymorphic class.

Change-Id: Ieb6de106084f838c5e6c8a0643c54fd3c7f4a7a8
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-11-12 15:25:06 +01:00
Volker Hilsheimer
03e03d7ceb Purge QCoreApplicationPrivate::cloneEvent and overrides
Not used anywhere in Qt 6, and if whatever needs this ever comes back,
then we won't implement it like this.

Change-Id: I99655ba5825644cef3686bbe50ca688b68f5c2a4
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-11-12 15:25:06 +01:00
Alexandru Croitor
267bb4ec6c CMake: pro2cmake: Reformat scripts using black8 again
Change-Id: I1b024867e76baa2e443e95a5e980745b65ee1f19
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2020-11-12 15:25:06 +01:00
Alexandru Croitor
34437b9e14 CMake: pro2cmake: Handle AUX_QML_FILES installation
Generate copy and installation rules for AUX_QML_FILES entries.
These are usually handled by mkspecs/features/qml_module.prf.

For the purposes of unblocking the Designer team, instead of creating
AUX_QML file specic functions that would handle installation, generate
qt_copy_or_install() rules.

To ensure installation destination is correct, we need to group file
paths by base directory and specify those in the DESTINATION
parameter. Otherwise the file hierarchy would be flattened.
This is usually handled by file_copies.prf and the equivalent qmake
install mechanism. In CMake we need to handle it manually.

Also detect usage of wildcards to ensure we use globs for
installation.

Task-number: QTBUG-87818
Change-Id: I8a5db445274fb670d90cf90b38598a6b3326bc44
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2020-11-12 15:25:06 +01:00
Joerg Bornemann
2d07ef0b56 CMake: Fix Core -> Core dependency in static build
Fix the overly strict regex in qt_internal_create_module_depends_file to
allow for - and _ in module names.

We had the above mentioned dependency cycle, because the module name
Core_qobject was translated to just Core, creating a Core -> Core
dependency.

Amends da7609e7d0.

Fixes: QTBUG-88437
Change-Id: I866f7ce31e9a1b92fe4c0a6450295c2f3c761558
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-11-12 14:25:06 +00:00
Alexey Edelev
d312580a05 CMake: Add special processing of opengl configure option
Since feature evaluation expects explicit 'no' value for INPUT_opengl
to disable either desktop or es2 opengl support, add special
processing for -no-opengl option into QtProcessConfigureArgs.cmake

Task-number: QTBUG-88142
Change-Id: Ib49123ee3e9f98035f6ec85a182382559f4db478
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-11-12 14:25:06 +00:00
Alexey Edelev
6af1358742 CMake: Fix configure arguments handling
All configure arguments should be processed as strings
and not be ignored if they satisfy CMake's FALSE criteria
(see https://cmake.org/cmake/help/latest/command/if.html)

Fixes: QTBUG-88424
Change-Id: I932038ad3c5999bed58957dec51fbf892bd650d7
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-11-12 14:25:06 +00:00
Andrei Golubev
405305069f Clean realloc() related bits in QString/QBA and Q*ArrayOps
Fixed misleading naming of "slowReallocatePath". It's no longer "slow",
it's downright dangerous now to reallocate under certain conditions

Added several asserts which should've been there already as our code
would run into a UB/crash anyhow - let's at least get extra checks
that are closer to the trouble causing places

Bring back the (slightly modified) code-cleaning changes from
504972f838

Change-Id: Ie1358aebc619062d3991a78049e366dc0e8c267e
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-11-12 09:53:49 +01:00
Jerome Pasion
7549d18054 Fix Qt SQL terminology
-"SQL" all uppercase

Task-number: QTBUG-88010
Change-Id: I3e2e45b4d9564982baee6993e939fcc7fa126f56
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-11-12 09:52:29 +01:00
Friedemann Kleint
0c1341ed5a Windows QPA: Fix a warning about deprecated conversion of keys
Use QKeyCombinaton::toCombined().

Change-Id: I829f4e88ad316a6f4f5165c1d929f2dcc83f83de
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2020-11-12 09:44:32 +01:00
Sona Kurazyan
190b77463d Improve QtConcurrent ImageScaling example to demo new features
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>
2020-11-12 08:56:14 +01:00
Joerg Bornemann
cc3f693029 CMake: Do not set PKG_CONFIG_* environment variables
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>
2020-11-12 08:51:25 +01:00
Allan Sandfeld Jensen
94dd2cebdc Remove Qt4Compatible painting
Change-Id: Ie54206ca9b509875568f2158e229fca9cb1860a2
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-11-12 08:31:18 +01:00
Andy Shaw
85fe4c8983 Android: Add the required linker flags for unwinding on armeabi-v7a
These flags are indicated as required for armeabi-v7a here:
https://android.googlesource.com/platform/ndk/+/master/docs/BuildSystemMaintainers.md#Unwinding

Pick-to: 5.15
Change-Id: Id2bbfc65c4ed9bda29692869a719dbab70891491
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
2020-11-12 08:17:51 +01:00
Topi Reinio
5d8a04f007 Doc: Fix documentation warnings for Qt Widgets
- 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>
2020-11-12 06:55:01 +01:00
Topi Reinio
25bda72630 Doc: Fix documentation warnings for Qt OpenGL
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>
2020-11-12 06:54:57 +01:00
Topi Reinio
d01b9ac6af Doc: Add missing brief statements for \property documentation
... where applicable.

Fixes: QTBUG-88232
Change-Id: I835df434765caededd35d5114965b4a1663e7942
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-11-12 06:54:53 +01:00
Giuseppe D'Angelo
328cad011e QStringTokenizer: fix a misuse of std::move
`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>
2020-11-12 06:02:49 +01:00
Alexander Kartashov
d08e3b6de1 QMutex: order reads from QMutexPrivate::waiters and QBasicMutex::d_ptr in QBasicMutex::lockInternal()
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>
2020-11-12 02:57:25 +00:00