diff options
author | Kevin Ottens <kevin.ottens@kdab.com> | 2015-02-04 16:46:35 +0100 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2015-02-08 15:01:54 +0000 |
commit | 906891f92bcdde3cad6618114689a57899bacb83 (patch) | |
tree | 0285320eb61a83d5ea79d4c052e665044e91fc3e /src/render/backend | |
parent | c72f232b572b5b4b2e20622b14fe6d2858c5d465 (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.cpp | 2 | ||||
-rw-r--r-- | src/render/backend/framegraph/framegraphnode_p.h | 9 | ||||
-rw-r--r-- | src/render/backend/renderentity.cpp | 3 | ||||
-rw-r--r-- | src/render/backend/renderentity_p.h | 2 | ||||
-rw-r--r-- | src/render/backend/rendermesh.cpp | 3 | ||||
-rw-r--r-- | src/render/backend/rendermesh_p.h | 2 | ||||
-rw-r--r-- | src/render/backend/rendernodefunctor_p.h | 3 | ||||
-rw-r--r-- | src/render/backend/renderparameter.cpp | 3 | ||||
-rw-r--r-- | src/render/backend/renderparameter_p.h | 2 | ||||
-rw-r--r-- | src/render/backend/renderscene.cpp | 3 | ||||
-rw-r--r-- | src/render/backend/renderscene_p.h | 2 | ||||
-rw-r--r-- | src/render/backend/rendershaderdata.cpp | 3 | ||||
-rw-r--r-- | src/render/backend/rendershaderdata_p.h | 2 |
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; |