summaryrefslogtreecommitdiffstats
path: root/src/corelib/kernel/qmetaobject.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/qmetaobject.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/qmetaobject.cpp')
-rw-r--r--src/corelib/kernel/qmetaobject.cpp10
1 files changed, 5 insertions, 5 deletions
diff --git a/src/corelib/kernel/qmetaobject.cpp b/src/corelib/kernel/qmetaobject.cpp
index 8d4d4d943f..e584fbba8e 100644
--- a/src/corelib/kernel/qmetaobject.cpp
+++ b/src/corelib/kernel/qmetaobject.cpp
@@ -2309,24 +2309,24 @@ bool QMetaMethod::invoke(QObject *object,
}
QScopedPointer<QMetaCallEvent> event(new QMetaCallEvent(idx_offset, idx_relative, callFunction, nullptr, -1, paramCount));
- int *types = event->types();
+ QMetaType *types = event->types();
void **args = event->args();
int argIndex = 0;
for (int i = 1; i < paramCount; ++i) {
- types[i] = QMetaType::fromName(typeNames[i]).id();
- if (types[i] == QMetaType::UnknownType && param[i]) {
+ types[i] = QMetaType::fromName(typeNames[i]);
+ if (!types[i].isValid() && param[i]) {
// Try to register the type and try again before reporting an error.
void *argv[] = { &types[i], &argIndex };
QMetaObject::metacall(object, QMetaObject::RegisterMethodArgumentMetaType,
idx_relative + idx_offset, argv);
- if (types[i] == -1) {
+ if (!types[i].isValid()) {
qWarning("QMetaMethod::invoke: Unable to handle unregistered datatype '%s'",
typeNames[i]);
return false;
}
}
- if (types[i] != QMetaType::UnknownType) {
+ if (types[i].isValid()) {
args[i] = QMetaType(types[i]).create(param[i]);
++argIndex;
}