summaryrefslogtreecommitdiffstats
path: root/src/core/aspects/qabstractaspect.cpp
diff options
context:
space:
mode:
authorVolker Krause <volker.krause@kdab.com>2016-02-19 11:56:44 +0100
committerVolker Krause <volker.krause@kdab.com>2016-02-19 14:07:55 +0000
commit10859432cf0e0dbb41bd70bf18c9a14abe91ee7d (patch)
treee9d1c55e66b8987a90ac52882e4b740c5505d201 /src/core/aspects/qabstractaspect.cpp
parent7acd6166c011b7c9f6443c520cb58b491566c4a7 (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.cpp12
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()) {