diff options
-rw-r--r-- | src/core/aspects/qabstractaspect.cpp | 16 | ||||
-rw-r--r-- | src/core/aspects/qabstractaspect.h | 5 | ||||
-rw-r--r-- | src/core/aspects/qabstractaspect_p.h | 7 | ||||
-rw-r--r-- | src/core/core.pri | 2 | ||||
-rw-r--r-- | src/core/nodes/qbackendnode.cpp | 2 | ||||
-rw-r--r-- | src/core/qbackendnodefactory.cpp | 2 | ||||
-rw-r--r-- | src/core/qbackendnodefactory_p.h (renamed from src/core/qbackendnodefactory.h) | 21 | ||||
-rw-r--r-- | src/render/backend/renderer.cpp | 17 | ||||
-rw-r--r-- | tests/auto/render/trianglesextractor/tst_trianglesextractor.cpp | 2 | ||||
-rw-r--r-- | tests/benchmarks/render/jobs/tst_bench_jobs.cpp | 2 |
10 files changed, 44 insertions, 32 deletions
diff --git a/src/core/aspects/qabstractaspect.cpp b/src/core/aspects/qabstractaspect.cpp index 555bd086d..e5472e094 100644 --- a/src/core/aspects/qabstractaspect.cpp +++ b/src/core/aspects/qabstractaspect.cpp @@ -99,8 +99,9 @@ void QAbstractAspect::sceneNodeAdded(QSceneChangePtr &e) QScenePropertyChangePtr propertyChange = e.staticCast<QScenePropertyChange>(); QNodePtr nodePtr = propertyChange->value().value<QNodePtr>(); QNode *n = nodePtr.data(); + Q_D(QAbstractAspect); QNodeVisitor visitor; - visitor.traverse(n, this, &QAbstractAspect::createBackendNode); + visitor.traverse(n, d, &QAbstractAspectPrivate::createBackendNode); } void QAbstractAspect::sceneNodeRemoved(QSceneChangePtr &e) @@ -118,13 +119,12 @@ QVariant QAbstractAspect::executeCommand(const QStringList &args) return QVariant(); } -QBackendNode *QAbstractAspect::createBackendNode(QNode *frontend) const +QBackendNode *QAbstractAspectPrivate::createBackendNode(QNode *frontend) const { - Q_D(const QAbstractAspect); const QMetaObject *metaObj = frontend->metaObject(); QBackendNodeFunctorPtr functor; while (metaObj != Q_NULLPTR && functor.isNull()) { - functor = d->m_backendCreatorFunctors.value(className(*metaObj)); + functor = m_backendCreatorFunctors.value(className(*metaObj)); metaObj = metaObj->superClass(); } if (!functor.isNull()) { @@ -140,10 +140,10 @@ QBackendNode *QAbstractAspect::createBackendNode(QNode *frontend) const QBackendNodePrivate *backendPriv = QBackendNodePrivate::get(backend); // TO DO: Find a way to specify the changes to observe // Register backendNode with QChangeArbiter - if (d->m_arbiter != Q_NULLPTR) { // Unit tests may not have the arbiter registered - d->m_arbiter->registerObserver(backendPriv, backend->peerUuid(), AllChanges); + if (m_arbiter != Q_NULLPTR) { // Unit tests may not have the arbiter registered + m_arbiter->registerObserver(backendPriv, backend->peerUuid(), AllChanges); if (backend->mode() == QBackendNode::ReadWrite) - d->m_arbiter->scene()->addObservable(backendPriv, backend->peerUuid()); + m_arbiter->scene()->addObservable(backendPriv, backend->peerUuid()); } return backend; } @@ -180,7 +180,7 @@ void QAbstractAspectPrivate::registerAspect(QEntity *rootObject) m_root = rootObject; QNodeVisitor visitor; - visitor.traverse(rootObject, q, &QAbstractAspect::createBackendNode); + visitor.traverse(rootObject, this, &QAbstractAspectPrivate::createBackendNode); q->onRootEntityChanged(rootObject); } diff --git a/src/core/aspects/qabstractaspect.h b/src/core/aspects/qabstractaspect.h index 5591779b0..312415f65 100644 --- a/src/core/aspects/qabstractaspect.h +++ b/src/core/aspects/qabstractaspect.h @@ -41,7 +41,6 @@ #include <QSharedPointer> #include <Qt3DCore/qt3dcore_global.h> #include <Qt3DCore/qaspectjobproviderinterface.h> -#include <Qt3DCore/qbackendnodefactory.h> #include <Qt3DCore/qsceneobserverinterface.h> QT_BEGIN_NAMESPACE @@ -51,7 +50,6 @@ namespace Qt3DCore { class QAspectEngine; class QAspectManager; class QNode; -class QBackendNode; class QEntity; class QAbstractAspectPrivate; class QBackendNodeFunctor; @@ -62,7 +60,6 @@ class QT3DCORESHARED_EXPORT QAbstractAspect : public QObject , public QAspectJobProviderInterface , public QSceneObserverInterface - , public QBackendNodeFactory { Q_OBJECT @@ -76,8 +73,6 @@ protected: void registerBackendType(const QBackendNodeFunctorPtr &functor); void registerBackendType(const QMetaObject &, const QBackendNodeFunctorPtr &functor); - QBackendNode *createBackendNode(QNode *frontend) const Q_DECL_OVERRIDE; - private: virtual QVariant executeCommand(const QStringList &args); diff --git a/src/core/aspects/qabstractaspect_p.h b/src/core/aspects/qabstractaspect_p.h index 558d28463..d17f01fc8 100644 --- a/src/core/aspects/qabstractaspect_p.h +++ b/src/core/aspects/qabstractaspect_p.h @@ -50,6 +50,7 @@ #include <private/qobject_p.h> #include <private/qbackendnode_p.h> +#include <private/qbackendnodefactory_p.h> #include <private/qt3dcore_global_p.h> #include <Qt3DCore/qabstractaspect.h> @@ -58,13 +59,16 @@ QT_BEGIN_NAMESPACE namespace Qt3DCore { class QAbstractAspect; +class QBackendNode; class QEntity; class QAspectManager; class QAbstractAspectJobManager; class QChangeArbiter; class QServiceLocator; -class QT3DCORE_PRIVATE_EXPORT QAbstractAspectPrivate : public QObjectPrivate +class QT3DCORE_PRIVATE_EXPORT QAbstractAspectPrivate + : public QObjectPrivate + , public QBackendNodeFactory { public: QAbstractAspectPrivate(); @@ -74,6 +78,7 @@ public: QServiceLocator *services() const; QAbstractAspectJobManager *jobManager() const; + QBackendNode *createBackendNode(QNode *frontend) const Q_DECL_OVERRIDE; void clearBackendNode(QNode *frontend) const; Q_DECLARE_PUBLIC(QAbstractAspect) diff --git a/src/core/core.pri b/src/core/core.pri index 0058e8e6a..f93763678 100644 --- a/src/core/core.pri +++ b/src/core/core.pri @@ -32,7 +32,7 @@ HEADERS += \ $$PWD/qobserverinterface_p.h \ $$PWD/qlockableobserverinterface_p.h \ $$PWD/qchangearbiter_p.h \ - $$PWD/qbackendnodefactory.h \ + $$PWD/qbackendnodefactory_p.h \ $$PWD/qray3d.h \ $$PWD/qt3dcore_global_p.h \ $$PWD/qscene_p.h diff --git a/src/core/nodes/qbackendnode.cpp b/src/core/nodes/qbackendnode.cpp index 84ed3cf33..e753ce9ec 100644 --- a/src/core/nodes/qbackendnode.cpp +++ b/src/core/nodes/qbackendnode.cpp @@ -36,7 +36,7 @@ #include "qbackendnode.h" #include "qbackendnode_p.h" -#include "qbackendnodefactory.h" +#include "qbackendnodefactory_p.h" #include "qaspectengine.h" #include "qnode.h" diff --git a/src/core/qbackendnodefactory.cpp b/src/core/qbackendnodefactory.cpp index 31d2f19ac..4b44cc8a8 100644 --- a/src/core/qbackendnodefactory.cpp +++ b/src/core/qbackendnodefactory.cpp @@ -34,7 +34,7 @@ ** ****************************************************************************/ -#include "qbackendnodefactory.h" +#include "qbackendnodefactory_p.h" QT_BEGIN_NAMESPACE diff --git a/src/core/qbackendnodefactory.h b/src/core/qbackendnodefactory_p.h index ac935328c..c56236446 100644 --- a/src/core/qbackendnodefactory.h +++ b/src/core/qbackendnodefactory_p.h @@ -34,10 +34,21 @@ ** ****************************************************************************/ -#ifndef QT3DCORE_QBACKENDNODEFACTORY_H -#define QT3DCORE_QBACKENDNODEFACTORY_H +#ifndef QT3DCORE_QBACKENDNODEFACTORY_P_H +#define QT3DCORE_QBACKENDNODEFACTORY_P_H -#include <Qt3DCore/qt3dcore_global.h> +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include <Qt3DCore/private/qt3dcore_global_p.h> QT_BEGIN_NAMESPACE @@ -46,7 +57,7 @@ namespace Qt3DCore { class QBackendNode; class QNode; -class QT3DCORESHARED_EXPORT QBackendNodeFactory +class QT3DCORE_PRIVATE_EXPORT QBackendNodeFactory { public: virtual ~QBackendNodeFactory(); @@ -57,4 +68,4 @@ public: QT_END_NAMESPACE -#endif // QT3DCORE_QBACKENDNODEFACTORY_H +#endif // QT3DCORE_QBACKENDNODEFACTORY_P_H diff --git a/src/render/backend/renderer.cpp b/src/render/backend/renderer.cpp index 42a4e2b1d..3e304aee3 100644 --- a/src/render/backend/renderer.cpp +++ b/src/render/backend/renderer.cpp @@ -428,19 +428,20 @@ void Renderer::setSceneRoot(Entity *sgRoot) // If that weren't for those lines, the renderer might not event need // to know about the renderer aspect - m_rendererAspect->createBackendNode(m_defaultMaterial); - m_rendererAspect->createBackendNode(m_defaultMaterial->effect()); - m_rendererAspect->createBackendNode(m_defaultTechnique); - m_rendererAspect->createBackendNode(m_defaultTechnique->renderPasses().first()); - m_rendererAspect->createBackendNode(m_defaultTechnique->renderPasses().first()->shaderProgram()); + QBackendNodeFactory *factory = QAbstractAspectPrivate::get(m_rendererAspect); + factory->createBackendNode(m_defaultMaterial); + factory->createBackendNode(m_defaultMaterial->effect()); + factory->createBackendNode(m_defaultTechnique); + factory->createBackendNode(m_defaultTechnique->renderPasses().first()); + factory->createBackendNode(m_defaultTechnique->renderPasses().first()->shaderProgram()); // We create backend resources for all the parameters Q_FOREACH (QParameter *p, m_defaultMaterial->parameters()) - m_rendererAspect->createBackendNode(p); + factory->createBackendNode(p); Q_FOREACH (QParameter *p, m_defaultTechnique->parameters()) - m_rendererAspect->createBackendNode(p); + factory->createBackendNode(p); Q_FOREACH (QParameter *p, m_defaultMaterial->effect()->parameters()) - m_rendererAspect->createBackendNode(p); + factory->createBackendNode(p); m_defaultMaterialHandle = nodeManagers()->lookupHandle<Material, MaterialManager, HMaterial>(m_defaultMaterial->id()); diff --git a/tests/auto/render/trianglesextractor/tst_trianglesextractor.cpp b/tests/auto/render/trianglesextractor/tst_trianglesextractor.cpp index 5bb7a1e6f..ede8fdd6c 100644 --- a/tests/auto/render/trianglesextractor/tst_trianglesextractor.cpp +++ b/tests/auto/render/trianglesextractor/tst_trianglesextractor.cpp @@ -336,7 +336,7 @@ public: void visitNode(Qt3DCore::QNode *node) { - QAbstractAspect::createBackendNode(node); + d_func()->createBackendNode(node); } }; diff --git a/tests/benchmarks/render/jobs/tst_bench_jobs.cpp b/tests/benchmarks/render/jobs/tst_bench_jobs.cpp index c3c2bcc8d..73b864687 100644 --- a/tests/benchmarks/render/jobs/tst_bench_jobs.cpp +++ b/tests/benchmarks/render/jobs/tst_bench_jobs.cpp @@ -142,7 +142,7 @@ public: void visitNode(Qt3DCore::QNode *node) { - QAbstractAspect::createBackendNode(node); + d_func()->createBackendNode(node); } private: |