summaryrefslogtreecommitdiffstats
path: root/src/render/backend
diff options
context:
space:
mode:
authorKevin Ottens <kevin.ottens@kdab.com>2015-02-04 16:46:35 +0100
committerSean Harmer <sean.harmer@kdab.com>2015-02-08 15:01:54 +0000
commit906891f92bcdde3cad6618114689a57899bacb83 (patch)
tree0285320eb61a83d5ea79d4c052e665044e91fc3e /src/render/backend
parentc72f232b572b5b4b2e20622b14fe6d2858c5d465 (diff)
Make QBackendNode use QBackendNodeFactory
For convenience we also provide a protected createBackendNode in QBackendNode itself. From now on it should be the preferred way to deal with node resolving. Change-Id: I22f490763026848a4dc8b55c98f649c36df258a3 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/render/backend')
-rw-r--r--src/render/backend/framegraph/framegraphnode.cpp2
-rw-r--r--src/render/backend/framegraph/framegraphnode_p.h9
-rw-r--r--src/render/backend/renderentity.cpp3
-rw-r--r--src/render/backend/renderentity_p.h2
-rw-r--r--src/render/backend/rendermesh.cpp3
-rw-r--r--src/render/backend/rendermesh_p.h2
-rw-r--r--src/render/backend/rendernodefunctor_p.h3
-rw-r--r--src/render/backend/renderparameter.cpp3
-rw-r--r--src/render/backend/renderparameter_p.h2
-rw-r--r--src/render/backend/renderscene.cpp3
-rw-r--r--src/render/backend/renderscene_p.h2
-rw-r--r--src/render/backend/rendershaderdata.cpp3
-rw-r--r--src/render/backend/rendershaderdata_p.h2
13 files changed, 23 insertions, 16 deletions
diff --git a/src/render/backend/framegraph/framegraphnode.cpp b/src/render/backend/framegraph/framegraphnode.cpp
index 037822f41..034520082 100644
--- a/src/render/backend/framegraph/framegraphnode.cpp
+++ b/src/render/backend/framegraph/framegraphnode.cpp
@@ -144,7 +144,7 @@ FrameGraphComponentFunctor::FrameGraphComponentFunctor(Renderer *renderer)
{
}
-QBackendNode *FrameGraphComponentFunctor::create(QNode *frontend) const
+QBackendNode *FrameGraphComponentFunctor::create(QNode *frontend, const QBackendNodeFactory *) const
{
// TO DO: Ideally we should have a RenderFrameGraph component and use its setPeer method
// to do that
diff --git a/src/render/backend/framegraph/framegraphnode_p.h b/src/render/backend/framegraph/framegraphnode_p.h
index b0c19b0e1..7c670b25a 100644
--- a/src/render/backend/framegraph/framegraphnode_p.h
+++ b/src/render/backend/framegraph/framegraphnode_p.h
@@ -116,9 +116,9 @@ public:
{
}
- QBackendNode *create(QNode *frontend) const Q_DECL_OVERRIDE
+ QBackendNode *create(QNode *frontend, const QBackendNodeFactory *factory) const Q_DECL_OVERRIDE
{
- return createBackendFrameGraphNode(frontend);
+ return createBackendFrameGraphNode(frontend, factory);
}
QBackendNode *get(QNode *frontend) const Q_DECL_OVERRIDE
@@ -135,7 +135,7 @@ public:
}
protected:
- Backend *createBackendFrameGraphNode(QNode *n) const
+ Backend *createBackendFrameGraphNode(QNode *n, const QBackendNodeFactory *factory) const
{
Frontend *f = qobject_cast<Frontend *>(n);
if (f != Q_NULLPTR) {
@@ -144,6 +144,7 @@ protected:
handle = m_manager->getOrAcquireHandle(n->id());
Backend *backend = new Backend();
*m_manager->data(handle) = backend;
+ backend->setFactory(factory);
backend->setFrameGraphManager(m_manager);
backend->setHandle(handle);
backend->setPeer(f);
@@ -164,7 +165,7 @@ class FrameGraphComponentFunctor : public QBackendNodeFunctor
{
public:
explicit FrameGraphComponentFunctor(Renderer *renderer);
- QBackendNode *create(QNode *frontend) const Q_DECL_OVERRIDE;
+ QBackendNode *create(QNode *frontend, const QBackendNodeFactory *factory) const Q_DECL_OVERRIDE;
QBackendNode *get(QNode *frontend) const Q_DECL_OVERRIDE;
void destroy(QNode *frontend) const Q_DECL_OVERRIDE;
diff --git a/src/render/backend/renderentity.cpp b/src/render/backend/renderentity.cpp
index 8390b19d7..2162363af 100644
--- a/src/render/backend/renderentity.cpp
+++ b/src/render/backend/renderentity.cpp
@@ -379,10 +379,11 @@ RenderEntityFunctor::RenderEntityFunctor(Renderer *renderer)
{
}
-QBackendNode *RenderEntityFunctor::create(QNode *frontend) const
+QBackendNode *RenderEntityFunctor::create(QNode *frontend, const QBackendNodeFactory *factory) const
{
HEntity renderNodeHandle = m_renderer->renderNodesManager()->getOrAcquireHandle(frontend->id());
RenderEntity *entity = m_renderer->renderNodesManager()->data(renderNodeHandle);
+ entity->setFactory(factory);
entity->setRenderer(m_renderer);
entity->setHandle(renderNodeHandle);
entity->setPeer(frontend);
diff --git a/src/render/backend/renderentity_p.h b/src/render/backend/renderentity_p.h
index f4a4aa3fc..fb691319a 100644
--- a/src/render/backend/renderentity_p.h
+++ b/src/render/backend/renderentity_p.h
@@ -225,7 +225,7 @@ class RenderEntityFunctor : public QBackendNodeFunctor
{
public:
explicit RenderEntityFunctor(Renderer *renderer);
- QBackendNode *create(QNode *frontend) const Q_DECL_OVERRIDE;
+ QBackendNode *create(QNode *frontend, const QBackendNodeFactory *factory) const Q_DECL_OVERRIDE;
QBackendNode *get(QNode *frontend) const Q_DECL_OVERRIDE;
void destroy(QNode *frontend) const Q_DECL_OVERRIDE;
diff --git a/src/render/backend/rendermesh.cpp b/src/render/backend/rendermesh.cpp
index e99f8c23c..b1c60e8ae 100644
--- a/src/render/backend/rendermesh.cpp
+++ b/src/render/backend/rendermesh.cpp
@@ -147,9 +147,10 @@ RenderMeshCreatorFunctor::RenderMeshCreatorFunctor(MeshManager *meshManager, Mes
{
}
-QBackendNode *RenderMeshCreatorFunctor::create(QNode *frontend) const
+QBackendNode *RenderMeshCreatorFunctor::create(QNode *frontend, const QBackendNodeFactory *factory) const
{
RenderMesh *mesh = m_meshManager->getOrCreateResource(frontend->id());
+ mesh->setFactory(factory);
mesh->setMeshDataManager(m_meshDataManager);
mesh->setPeer(frontend);
return mesh;
diff --git a/src/render/backend/rendermesh_p.h b/src/render/backend/rendermesh_p.h
index 1f2451968..1d488e09e 100644
--- a/src/render/backend/rendermesh_p.h
+++ b/src/render/backend/rendermesh_p.h
@@ -100,7 +100,7 @@ class RenderMeshCreatorFunctor : public QBackendNodeFunctor
{
public:
explicit RenderMeshCreatorFunctor(MeshManager *meshManager, MeshDataManager *meshDataManager);
- QBackendNode *create(QNode *frontend) const Q_DECL_OVERRIDE;
+ QBackendNode *create(QNode *frontend, const QBackendNodeFactory *factory) const Q_DECL_OVERRIDE;
QBackendNode *get(QNode *frontend) const Q_DECL_OVERRIDE;
void destroy(QNode *frontend) const Q_DECL_OVERRIDE;
diff --git a/src/render/backend/rendernodefunctor_p.h b/src/render/backend/rendernodefunctor_p.h
index 25d461e81..a7a66fc91 100644
--- a/src/render/backend/rendernodefunctor_p.h
+++ b/src/render/backend/rendernodefunctor_p.h
@@ -60,9 +60,10 @@ public:
{
}
- QBackendNode *create(QNode *frontend) const Q_DECL_FINAL
+ QBackendNode *create(QNode *frontend, const QBackendNodeFactory *factory) const Q_DECL_FINAL
{
Backend *backend = m_manager->getOrCreateResource(frontend->id());
+ backend->setFactory(factory);
backend->setPeer(frontend);
return backend;
}
diff --git a/src/render/backend/renderparameter.cpp b/src/render/backend/renderparameter.cpp
index adcacd4cd..97716e843 100644
--- a/src/render/backend/renderparameter.cpp
+++ b/src/render/backend/renderparameter.cpp
@@ -122,10 +122,11 @@ RenderParameterFunctor::RenderParameterFunctor(ParameterManager *parameterManage
{
}
-QBackendNode *RenderParameterFunctor::create(QNode *frontend) const
+QBackendNode *RenderParameterFunctor::create(QNode *frontend, const QBackendNodeFactory *factory) const
{
HParameter parameterNodeHandle = m_parameterManager->getOrAcquireHandle(frontend->id());
RenderParameter *parameter = m_parameterManager->data(parameterNodeHandle);
+ parameter->setFactory(factory);
parameter->setShaderDataManager(m_shaderDataManager);
parameter->setTextureManager(m_textureManager);
parameter->setPeer(frontend);
diff --git a/src/render/backend/renderparameter_p.h b/src/render/backend/renderparameter_p.h
index 92e848b68..3c7f5d7f9 100644
--- a/src/render/backend/renderparameter_p.h
+++ b/src/render/backend/renderparameter_p.h
@@ -85,7 +85,7 @@ public:
explicit RenderParameterFunctor(ParameterManager *parameterManager,
ShaderDataManager *shaderDataManager,
TextureManager *textureManager);
- QBackendNode *create(QNode *frontend) const Q_DECL_OVERRIDE;
+ QBackendNode *create(QNode *frontend, const QBackendNodeFactory *factory) const Q_DECL_OVERRIDE;
QBackendNode *get(QNode *frontend) const Q_DECL_OVERRIDE;
void destroy(QNode *frontend) const Q_DECL_OVERRIDE;
diff --git a/src/render/backend/renderscene.cpp b/src/render/backend/renderscene.cpp
index 2b74df3a5..677903e56 100644
--- a/src/render/backend/renderscene.cpp
+++ b/src/render/backend/renderscene.cpp
@@ -108,9 +108,10 @@ RenderSceneFunctor::RenderSceneFunctor(SceneManager *sceneManager)
{
}
-QBackendNode *RenderSceneFunctor::create(QNode *frontend) const
+QBackendNode *RenderSceneFunctor::create(QNode *frontend, const QBackendNodeFactory *factory) const
{
RenderScene *scene = m_sceneManager->getOrCreateResource(frontend->id());
+ scene->setFactory(factory);
scene->setSceneManager(m_sceneManager);
scene->setPeer(frontend);
return scene;
diff --git a/src/render/backend/renderscene_p.h b/src/render/backend/renderscene_p.h
index f102d2f2a..598bb5bfe 100644
--- a/src/render/backend/renderscene_p.h
+++ b/src/render/backend/renderscene_p.h
@@ -77,7 +77,7 @@ class RenderSceneFunctor : public QBackendNodeFunctor
{
public:
explicit RenderSceneFunctor(SceneManager *sceneManager);
- QBackendNode *create(QNode *frontend) const Q_DECL_OVERRIDE;
+ QBackendNode *create(QNode *frontend, const QBackendNodeFactory *factory) const Q_DECL_OVERRIDE;
QBackendNode *get(QNode *frontend) const Q_DECL_OVERRIDE;
void destroy(QNode *frontend) const Q_DECL_OVERRIDE;
diff --git a/src/render/backend/rendershaderdata.cpp b/src/render/backend/rendershaderdata.cpp
index b8f78aeb5..da573dad7 100644
--- a/src/render/backend/rendershaderdata.cpp
+++ b/src/render/backend/rendershaderdata.cpp
@@ -294,9 +294,10 @@ RenderShaderDataFunctor::RenderShaderDataFunctor(ShaderDataManager *manager)
{
}
-QBackendNode *RenderShaderDataFunctor::create(QNode *frontend) const
+QBackendNode *RenderShaderDataFunctor::create(QNode *frontend, const QBackendNodeFactory *factory) const
{
RenderShaderData *backend = m_manager->getOrCreateResource(frontend->id());
+ backend->setFactory(factory);
backend->setManager(m_manager);
backend->setPeer(frontend);
return backend;
diff --git a/src/render/backend/rendershaderdata_p.h b/src/render/backend/rendershaderdata_p.h
index dc7a1c3c8..6efd4a470 100644
--- a/src/render/backend/rendershaderdata_p.h
+++ b/src/render/backend/rendershaderdata_p.h
@@ -111,7 +111,7 @@ class RenderShaderDataFunctor : public QBackendNodeFunctor
public:
explicit RenderShaderDataFunctor(ShaderDataManager *manager);
- QBackendNode *create(QNode *frontend) const Q_DECL_FINAL;
+ QBackendNode *create(QNode *frontend, const QBackendNodeFactory *factory) const Q_DECL_FINAL;
QBackendNode *get(QNode *frontend) const Q_DECL_FINAL;
void destroy(QNode *frontend) const Q_DECL_FINAL;