summaryrefslogtreecommitdiffstats
path: root/src/corelib/kernel/qobject.cpp
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@qt.io>2020-07-27 19:16:17 +0200
committerLars Knoll <lars.knoll@qt.io>2020-08-24 00:19:36 +0200
commit0161f00e5043090f22b23de9822c09062b17d675 (patch)
treee2a6d59028ada109a79c60d32186f9661eb5c67f /src/corelib/kernel/qobject.cpp
parent700e6341e51f5e6f45303fab3d0a84a3eb249eba (diff)
Use QMetaType in QMetaCallEvent
And don't use int based type mapping anymore. Change-Id: I456e76d1933ef646a7bd39ce565886b89e938a44 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/corelib/kernel/qobject.cpp')
-rw-r--r--src/corelib/kernel/qobject.cpp16
1 files changed, 8 insertions, 8 deletions
diff --git a/src/corelib/kernel/qobject.cpp b/src/corelib/kernel/qobject.cpp
index a84d501a32..1b8646947e 100644
--- a/src/corelib/kernel/qobject.cpp
+++ b/src/corelib/kernel/qobject.cpp
@@ -506,7 +506,7 @@ inline void QMetaCallEvent::allocArgs()
if (!d.nargs_)
return;
- constexpr size_t each = sizeof(void*) + sizeof(int);
+ constexpr size_t each = sizeof(void*) + sizeof(QMetaType);
void *const memory = d.nargs_ * each > sizeof(prealloc_) ?
calloc(d.nargs_, each) : prealloc_;
@@ -588,10 +588,10 @@ QMetaCallEvent::QMetaCallEvent(QtPrivate::QSlotObjectBase *slotO,
QMetaCallEvent::~QMetaCallEvent()
{
if (d.nargs_) {
- int *typeIDs = types();
+ QMetaType *t = types();
for (int i = 0; i < d.nargs_; ++i) {
- if (typeIDs[i] && d.args_[i])
- QMetaType(typeIDs[i]).destroy(d.args_[i]);
+ if (t[i].isValid() && d.args_[i])
+ t[i].destroy(d.args_[i]);
}
if (reinterpret_cast<void*>(d.args_) != reinterpret_cast<void*>(prealloc_))
free(d.args_);
@@ -3644,17 +3644,17 @@ static void queued_activate(QObject *sender, int signal, QObjectPrivate::Connect
new QMetaCallEvent(c->method_offset, c->method_relative, c->callFunction, sender, signal, nargs);
void **args = ev->args();
- int *types = ev->types();
+ QMetaType *types = ev->types();
- types[0] = 0; // return type
+ types[0] = QMetaType(); // return type
args[0] = nullptr; // return value
if (nargs > 1) {
for (int n = 1; n < nargs; ++n)
- types[n] = argumentTypes[n-1];
+ types[n] = QMetaType(argumentTypes[n-1]);
for (int n = 1; n < nargs; ++n)
- args[n] = QMetaType(types[n]).create(argv[n]);
+ args[n] = types[n].create(argv[n]);
}
locker.relock();