summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/core/aspects/qabstractaspect.cpp16
-rw-r--r--src/core/aspects/qabstractaspect.h5
-rw-r--r--src/core/aspects/qabstractaspect_p.h7
-rw-r--r--src/core/core.pri2
-rw-r--r--src/core/nodes/qbackendnode.cpp2
-rw-r--r--src/core/qbackendnodefactory.cpp2
-rw-r--r--src/core/qbackendnodefactory_p.h (renamed from src/core/qbackendnodefactory.h)21
-rw-r--r--src/render/backend/renderer.cpp17
-rw-r--r--tests/auto/render/trianglesextractor/tst_trianglesextractor.cpp2
-rw-r--r--tests/benchmarks/render/jobs/tst_bench_jobs.cpp2
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: