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 <david.faure@kdab.com>
bb10
Marc Mutz 2024-03-21 17:47:58 +01:00
parent ef2b55ee65
commit d6c7b0c2bc
2 changed files with 7 additions and 5 deletions

View File

@ -220,10 +220,11 @@ QSignalSpy::ObjectSignal QSignalSpy::verify(const QObject *obj, QMetaMethod sign
return {};
}
void QSignalSpy::initArgs(const QMetaMethod &member, const QObject *obj)
QList<int> QSignalSpy::makeArgs(const QMetaMethod &member, const QObject *obj)
{
QList<int> 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)

View File

@ -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<int> makeArgs(const QMetaMethod &member, const QObject *obj);
Q_TESTLIB_EXPORT void appendArgs(void **a);
// the full, normalized signal name