diff options
author | Lars Knoll <lars.knoll@qt.io> | 2020-07-27 19:16:17 +0200 |
---|---|---|
committer | Lars Knoll <lars.knoll@qt.io> | 2020-08-24 00:19:36 +0200 |
commit | 0161f00e5043090f22b23de9822c09062b17d675 (patch) | |
tree | e2a6d59028ada109a79c60d32186f9661eb5c67f /src/corelib/kernel/qmetaobject.cpp | |
parent | 700e6341e51f5e6f45303fab3d0a84a3eb249eba (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.cpp | 10 |
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; } |