From 16d412da4c0d7ef4776604b906fccb8132a7712d Mon Sep 17 00:00:00 2001 From: Fabian Kosmale Date: Mon, 9 Nov 2020 15:23:52 +0100 Subject: QSignalSpy: Use QMetaType instead of metatype id in initArgs The RegisterMethodArgumentMetaType had been changed to take a QMetaType instead of a type id in 0161f00e5043090f22b23de9822c09062b17d675. Unfortunately, the usage of it in QSignalSpy was missed. This patch adjusts the metacall to correctly use a QMetaType. Moreover, use parameterMetaType instead of parameterType to benefit from metatypes which are already resolved at compile time. Task-number: QTBUG-88260 Fixes: QTBUG-88356 Change-Id: Id8fa46581a005d62818971ea24d8aa2e39dcd6d0 Reviewed-by: Eskil Abrahamsen Blomfeldt Reviewed-by: Lars Knoll --- src/testlib/qsignalspy.h | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) (limited to 'src/testlib') diff --git a/src/testlib/qsignalspy.h b/src/testlib/qsignalspy.h index 1d42995b4e..3ba56749ea 100644 --- a/src/testlib/qsignalspy.h +++ b/src/testlib/qsignalspy.h @@ -192,23 +192,21 @@ private: { args.reserve(member.parameterCount()); for (int i = 0; i < member.parameterCount(); ++i) { - int tp = member.parameterType(i); - if (tp == QMetaType::UnknownType && obj) { + QMetaType tp = member.parameterMetaType(i); + if (!tp.isValid() && obj) { void *argv[] = { &tp, &i }; QMetaObject::metacall(const_cast(obj), QMetaObject::RegisterMethodArgumentMetaType, member.methodIndex(), argv); - if (tp == -1) - tp = QMetaType::UnknownType; } - if (tp == QMetaType::UnknownType) { + if (!tp.isValid()) { qWarning("QSignalSpy: Unable to handle parameter '%s' of type '%s' of method '%s'," " use qRegisterMetaType to register it.", member.parameterNames().at(i).constData(), member.parameterTypes().at(i).constData(), member.name().constData()); } - args << tp; + args << tp.id(); } } -- cgit v1.2.3