diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2022-03-14 13:29:49 +0100 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2022-03-14 15:50:11 +0100 |
commit | 216c7802c393995acce063da48300b06caa23eb1 (patch) | |
tree | a7cb0596c16d63475c693827d11b4db5ae32b7ca /sources/pyside6/libpyside/dynamicqmetaobject.cpp | |
parent | 3ed0a3dca33fe65d3ead8731a129fdb562d0c204 (diff) |
libpyside: Refactor handling of named signal arguments
Allocate the list of names only if the "arguments" parameter
is present. Delete it in signalFree().
Pick-to: 6.2
Change-Id: I56fe3c1a50a73e7a7ae924ccb844d2bd6378a00d
Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
Diffstat (limited to 'sources/pyside6/libpyside/dynamicqmetaobject.cpp')
-rw-r--r-- | sources/pyside6/libpyside/dynamicqmetaobject.cpp | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/sources/pyside6/libpyside/dynamicqmetaobject.cpp b/sources/pyside6/libpyside/dynamicqmetaobject.cpp index 6f1c9b40a..b23e4a426 100644 --- a/sources/pyside6/libpyside/dynamicqmetaobject.cpp +++ b/sources/pyside6/libpyside/dynamicqmetaobject.cpp @@ -625,21 +625,19 @@ void MetaObjectBuilderPrivate::parsePythonType(PyTypeObject *type) while (PyDict_Next(attrs, &pos, &key, &value)) { if (Signal::checkType(value)) { // Register signals. - auto data = reinterpret_cast<PySideSignal *>(value); - if (data->data->signalName.isEmpty()) - data->data->signalName = String::toCString(key); - for (const auto &s : data->data->signatures) { - const auto sig = data->data->signalName + '(' + s.signature + ')'; + auto *data = reinterpret_cast<PySideSignal *>(value)->data; + if (data->signalName.isEmpty()) + data->signalName = String::toCString(key); + for (const auto &s : data->signatures) { + const auto sig = data->signalName + '(' + s.signature + ')'; if (m_baseObject->indexOfSignal(sig) == -1) { // Registering the parameterNames to the QMetaObject (PYSIDE-634) // from: // Signal(..., arguments=['...', ...] // the arguments are now on data-data->signalArguments - if (!data->data->signalArguments->isEmpty()) { - m_builder->addSignal(sig).setParameterNames(*data->data->signalArguments); - } else { - m_builder->addSignal(sig); - } + auto builder = m_builder->addSignal(sig); + if (data->signalArguments && !data->signalArguments->isEmpty()) + builder.setParameterNames(*data->signalArguments); } } } |