From 0161f00e5043090f22b23de9822c09062b17d675 Mon Sep 17 00:00:00 2001 From: Lars Knoll Date: Mon, 27 Jul 2020 19:16:17 +0200 Subject: Use QMetaType in QMetaCallEvent And don't use int based type mapping anymore. Change-Id: I456e76d1933ef646a7bd39ce565886b89e938a44 Reviewed-by: Thiago Macieira --- src/corelib/kernel/qmetaobject.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src/corelib/kernel/qmetaobject.cpp') 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 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; } -- cgit v1.2.3