From d6c7b0c2bcb15acb815d02a170d5ff7c57470dc1 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Thu, 21 Mar 2024 17:47:58 +0100 Subject: [PATCH] QSignalSpy: make initArgs() return the result ... instead of working directly on the member variable. This is in preparation of making said member variable const, so it need no longer be protected by the mutex. Task-number: QTBUG-123544 Change-Id: Ifc407502ec2c5c52dc3b42edea18be7fc672a968 Reviewed-by: David Faure --- src/testlib/qsignalspy.cpp | 8 +++++--- src/testlib/qsignalspy.h | 4 ++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/testlib/qsignalspy.cpp b/src/testlib/qsignalspy.cpp index a4c0291481..05b9868e34 100644 --- a/src/testlib/qsignalspy.cpp +++ b/src/testlib/qsignalspy.cpp @@ -220,10 +220,11 @@ QSignalSpy::ObjectSignal QSignalSpy::verify(const QObject *obj, QMetaMethod sign return {}; } -void QSignalSpy::initArgs(const QMetaMethod &member, const QObject *obj) +QList QSignalSpy::makeArgs(const QMetaMethod &member, const QObject *obj) { + QList result; QMutexLocker locker(&m_mutex); - args.reserve(member.parameterCount()); + result.reserve(member.parameterCount()); for (int i = 0; i < member.parameterCount(); ++i) { QMetaType tp = member.parameterMetaType(i); if (!tp.isValid() && obj) { @@ -241,8 +242,9 @@ void QSignalSpy::initArgs(const QMetaMethod &member, const QObject *obj) member.parameterTypes().at(i).constData(), member.name().constData()); } - args << tp.id(); + result.append(tp.id()); } + return result; } bool QSignalSpy::connectToSignal(const QObject *sender, int sigIndex) diff --git a/src/testlib/qsignalspy.h b/src/testlib/qsignalspy.h index b15831768b..af9587b369 100644 --- a/src/testlib/qsignalspy.h +++ b/src/testlib/qsignalspy.h @@ -66,7 +66,7 @@ private: { if (!os.obj) return; - initArgs(os.sig, os.obj); + args = makeArgs(os.sig, os.obj); if (!connectToSignal(os.obj, os.sig.methodIndex())) return; @@ -82,7 +82,7 @@ private: Q_TESTLIB_EXPORT static bool isSignalMetaMethodValid(const QMetaMethod &signal); Q_TESTLIB_EXPORT static bool isObjectValid(const QObject *object); - Q_TESTLIB_EXPORT void initArgs(const QMetaMethod &member, const QObject *obj); + Q_TESTLIB_EXPORT QList makeArgs(const QMetaMethod &member, const QObject *obj); Q_TESTLIB_EXPORT void appendArgs(void **a); // the full, normalized signal name