diff options
author | Volker Krause <volker.krause@kdab.com> | 2016-02-19 11:56:44 +0100 |
---|---|---|
committer | Volker Krause <volker.krause@kdab.com> | 2016-02-19 14:07:55 +0000 |
commit | 10859432cf0e0dbb41bd70bf18c9a14abe91ee7d (patch) | |
tree | e9d1c55e66b8987a90ac52882e4b740c5505d201 /src/core/aspects/qabstractaspect.cpp | |
parent | 7acd6166c011b7c9f6443c520cb58b491566c4a7 (diff) |
Use QMetaObject* as key in the backend creator functor hash directly.
Using the class name allocates due to the fromRawData call, for every
lookup. As a side-effect we also avoid a number of string operations.
Change-Id: Iba2dbfb095ec3adc1ba8f6a132ad269c3c58c6cf
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/core/aspects/qabstractaspect.cpp')
-rw-r--r-- | src/core/aspects/qabstractaspect.cpp | 12 |
1 files changed, 3 insertions, 9 deletions
diff --git a/src/core/aspects/qabstractaspect.cpp b/src/core/aspects/qabstractaspect.cpp index 05bcbf41a..d7b44ff54 100644 --- a/src/core/aspects/qabstractaspect.cpp +++ b/src/core/aspects/qabstractaspect.cpp @@ -49,12 +49,6 @@ QT_BEGIN_NAMESPACE -static QByteArray className(const QMetaObject &obj) -{ - // note: class names are stored in static meta objects, thus the usage of fromRawData here is fine - return QByteArray::fromRawData(obj.className(), int(strlen(obj.className()))); -} - namespace Qt3DCore { QAbstractAspectPrivate::QAbstractAspectPrivate() @@ -107,7 +101,7 @@ QAbstractAspect::QAbstractAspect(QAbstractAspectPrivate &dd, QObject *parent) void QAbstractAspect::registerBackendType(const QMetaObject &obj, const QBackendNodeFunctorPtr &functor) { Q_D(QAbstractAspect); - d->m_backendCreatorFunctors.insert(className(obj), functor); + d->m_backendCreatorFunctors.insert(&obj, functor); } void QAbstractAspectPrivate::sceneNodeAdded(QSceneChangePtr &e) @@ -138,7 +132,7 @@ QBackendNode *QAbstractAspectPrivate::createBackendNode(QNode *frontend) const const QMetaObject *metaObj = frontend->metaObject(); QBackendNodeFunctorPtr functor; while (metaObj != Q_NULLPTR && functor.isNull()) { - functor = m_backendCreatorFunctors.value(className(*metaObj)); + functor = m_backendCreatorFunctors.value(metaObj); metaObj = metaObj->superClass(); } if (!functor.isNull()) { @@ -170,7 +164,7 @@ void QAbstractAspectPrivate::clearBackendNode(QNode *frontend) const QBackendNodeFunctorPtr functor; while (metaObj != Q_NULLPTR && functor.isNull()) { - functor = m_backendCreatorFunctors.value(className(*metaObj)); + functor = m_backendCreatorFunctors.value(metaObj); metaObj = metaObj->superClass(); } if (!functor.isNull()) { |