diff options
author | Lars Knoll <lars.knoll@qt.io> | 2020-08-04 10:35:46 +0200 |
---|---|---|
committer | Lars Knoll <lars.knoll@qt.io> | 2020-08-24 00:19:05 +0200 |
commit | 1697fbdf05ff643d617a9ba1614454926e86a3d9 (patch) | |
tree | 1c090fd9254ccedf33e724158e115157998304cf /src/dbus/qdbusmetaobject.cpp | |
parent | 92b37676328a960bc092b1f3834233c550376457 (diff) |
Deprecate the static int based API in QMetaType
And remove one of the type id to name mapping that still
existed in QMetaType. QMetaTypeInterface can provide that,
so there's no need to have a second copy of the data.
qMetaTypeTypeInternal() can still map all the names of all
builtin types to ids. That functionality is for now still
required by moc and can't be removed yet.
Change-Id: Ib4f8e9c71e1e7d99d52da9e44477c9a1f1805e57
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Diffstat (limited to 'src/dbus/qdbusmetaobject.cpp')
-rw-r--r-- | src/dbus/qdbusmetaobject.cpp | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/src/dbus/qdbusmetaobject.cpp b/src/dbus/qdbusmetaobject.cpp index 5162d07e0d..dee885395a 100644 --- a/src/dbus/qdbusmetaobject.cpp +++ b/src/dbus/qdbusmetaobject.cpp @@ -134,11 +134,8 @@ static int registerComplexDBusType(const QByteArray &typeName) const QByteArray name; QDBusRawTypeHandler(const QByteArray &name) : QtPrivate::QMetaTypeInterface { - 0, sizeof(void *), sizeof(void *), QMetaType::MovableType, nullptr, - name.constData(), 0, QtPrivate::RefCount{0}, - [](QtPrivate::QMetaTypeInterface *self) { - delete static_cast<QDBusRawTypeHandler *>(self); - }, + 0, sizeof(void *), sizeof(void *), QMetaType::MovableType, 0, nullptr, + name.constData(), nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr @@ -148,7 +145,14 @@ static int registerComplexDBusType(const QByteArray &typeName) }; static QBasicMutex mutex; - static QHash<QByteArray, QMetaType> hash; + static struct Hash : QHash<QByteArray, QMetaType> + { + ~Hash() + { + for (QMetaType entry : *this) + QMetaType::unregisterMetaType(std::move(entry)); + } + } hash; QMutexLocker lock(&mutex); QMetaType &metatype = hash[typeName]; if (!metatype.isValid()) @@ -192,7 +196,7 @@ QDBusMetaObjectGenerator::findType(const QByteArray &signature, if (!typeName.isEmpty()) { // type name found - type = QMetaType::type(typeName); + type = QMetaType::fromName(typeName).id(); } if (type == QMetaType::UnknownType || signature != QDBusMetaType::typeToSignature(type)) { @@ -221,7 +225,7 @@ QDBusMetaObjectGenerator::findType(const QByteArray &signature, type = registerComplexDBusType(result.name); } } else { - result.name = QMetaType::typeName(type); + result.name = QMetaType(type).name(); } result.id = type; @@ -501,7 +505,7 @@ void QDBusMetaObjectGenerator::write(QDBusMetaObject *obj) Q_ASSERT(mm.outputTypes.size() > 1); type = mm.outputTypes.at(i - mm.inputTypes.size() + 1); // Output parameters are references; type id not available - typeName = QMetaType::typeName(type); + typeName = QMetaType(type).name(); typeName.append('&'); } Q_ASSERT(type != QMetaType::UnknownType); |