Go to file
Volker Hilsheimer b7d073e990 Refactor memory allocation for arguments of QMetaCallEvents
There are two cases:

In a BlockingQueuedConnection, QMetaCallEvent doesn't allocate memory
and instead passes already existing pointers through. A QSemaphore
is used to serialize data access between threads. So the constructor
taking a QSemaphore can be simplified to only accept an existing arg
array.

In a QueuedConnection, QMetaCallEvent needs to make deep copies of
the arguments, and memory needs to be allocated based on the number
of arguments. The previous code put the burden of memory allocation
on the code generating the event, while the memory was free'd by
~QMetaCallEvent. Instead, make it QMetaCallEvent's responsibility
to allocate and free the memory as needed, and adjust the code
generating QMetaCallEvents.

We can allocate the memory for types and pointers to arguments in a
single block, starting with the space for the array of void*, followed
by the space for the array of integers to avoid byte alignment issues.
By pre-allocating the space that's needed by three arguments, we can
avoid all mallocs for the majority of QMetaCallEvents.

Until this change has propagated through qt5.git, we need to keep the
old API that is still used by QtDeclarative around. Once QtDeclarative
has migrated to the new API, it can be removed.

Change-Id: Id7359ffc14897237ea9672dabae9ef199a821907
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-08-10 22:04:11 +02:00
bin syncqt: Fix module header install target creation 2019-07-11 09:50:18 +02:00
config.tests Fix android architecture detection 2019-07-09 22:53:48 +02:00
dist Merge remote-tracking branch 'origin/5.12' into 5.13 2019-06-20 07:50:44 +02:00
doc Introduce Q_NAMESPACE_EXPORT 2019-06-28 06:47:29 +02:00
examples Remove usages of deprecated APIs of qtbase/widgets 2019-08-01 17:04:13 +00:00
lib
mkspecs Require opt-out for using QLinkedList 2019-08-07 20:09:10 +00:00
qmake Warn about conflicting DESTDIR/TARGET combination in debug_and_release 2019-08-09 10:29:28 +02:00
src Refactor memory allocation for arguments of QMetaCallEvents 2019-08-10 22:04:11 +02:00
tests Refactor memory allocation for arguments of QMetaCallEvents 2019-08-10 22:04:11 +02:00
util Extract a large format string as a module constant value 2019-08-08 18:04:05 +02:00
.gitattributes
.gitignore qfloat16: Check in the tables to Git 2019-06-03 10:42:53 -07:00
.qmake.conf Require opt-out for using QLinkedList 2019-08-07 20:09:10 +00:00
.tag
config_help.txt Add -qtlibinfix-plugins for renaming Qt plugins according to QT_LIBINFIX 2019-05-16 06:22:25 +00:00
configure Fix typo in configure script 2019-07-24 10:42:16 +09:00
configure.bat Configure: simplify logic 2019-03-14 12:13:58 +00:00
configure.json Merge remote-tracking branch 'origin/5.13' into dev 2019-07-17 10:44:21 +02:00
configure.pri Merge remote-tracking branch 'origin/5.12' into 5.13 2019-07-12 12:23:29 +02:00
header.BSD Use placeholder for year in header.* files 2018-04-16 11:02:22 +00:00
header.COMM Use placeholder for year in header.* files 2018-04-16 11:02:22 +00:00
header.FDL Use placeholder for year in header.* files 2018-04-16 11:02:22 +00:00
header.GPL Use placeholder for year in header.* files 2018-04-16 11:02:22 +00:00
header.GPL-EXCEPT Use placeholder for year in header.* files 2018-04-16 11:02:22 +00:00
header.LGPL Use placeholder for year in header.* files 2018-04-16 11:02:22 +00:00
header.LGPL3 Use placeholder for year in header.* files 2018-04-16 11:02:22 +00:00
header.LGPL3-COMM Use placeholder for year in header.* files 2018-04-16 11:02:22 +00:00
header.LGPL-NOGPL2 Use placeholder for year in header.* files 2018-04-16 11:02:22 +00:00
header.LGPL-ONLY Use placeholder for year in header.* files 2018-04-16 11:02:22 +00:00
header.MIT qsimd: add support for new x86 CPU features 2018-05-05 06:20:07 +00:00
INSTALL INSTALL: Remove outdated reference to Windows CE 2019-02-13 13:01:57 +00:00
LICENSE.FDL
LICENSE.GPL2
LICENSE.GPL3
LICENSE.GPL3-EXCEPT
LICENSE.LGPL3
LICENSE.LGPLv3
LICENSE.QT-LICENSE-AGREEMENT-4.0 Replace commercial preview license with Qt License Agreement 4.0 2018-06-21 11:39:15 +00:00
qtbase.pro
sync.profile platformsupport/input: add xkbcommon utilities lib 2019-03-01 14:31:28 +00:00