summaryrefslogtreecommitdiffstats
path: root/src/render/backend
diff options
context:
space:
mode:
authorKevin Ottens <kevin.ottens@kdab.com>2015-02-04 17:34:34 +0100
committerSean Harmer <sean.harmer@kdab.com>2015-02-08 15:01:59 +0000
commit6ac96d11449769118dc1f5b443fc7112bed3facc (patch)
tree7691ae1280398f0dea4b9bba83cb76042822d76a /src/render/backend
parent906891f92bcdde3cad6618114689a57899bacb83 (diff)
No need to depend on managers from RenderParameter
This way we can also get rid of the specific functor, the generic one is enough again. That's possible thanks to createBackendNode availability. Change-Id: I6ef4dc811c4304f1cf551200e1cedd9a81a53f43 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/render/backend')
-rw-r--r--src/render/backend/qrenderaspect.cpp2
-rw-r--r--src/render/backend/renderparameter.cpp32
-rw-r--r--src/render/backend/renderparameter_p.h16
3 files changed, 3 insertions, 47 deletions
diff --git a/src/render/backend/qrenderaspect.cpp b/src/render/backend/qrenderaspect.cpp
index 1f2cd7175..03026118d 100644
--- a/src/render/backend/qrenderaspect.cpp
+++ b/src/render/backend/qrenderaspect.cpp
@@ -212,7 +212,7 @@ void QRenderAspect::registerBackendTypes()
registerBackendType<QSortMethod>(QBackendNodeFunctorPtr(new Render::FrameGraphNodeFunctor<Render::SortMethod, QSortMethod>(d->m_renderer->frameGraphManager())));
registerBackendType<QFrameGraphSelector>(QBackendNodeFunctorPtr(new Render::FrameGraphNodeFunctor<Render::FrameGraphSubtreeSelector, QFrameGraphSelector>(d->m_renderer->frameGraphManager())));
registerBackendType<QFrameGraph>(QBackendNodeFunctorPtr(new Render::FrameGraphComponentFunctor(d->m_renderer)));
- registerBackendType<QParameter>(QBackendNodeFunctorPtr(new Render::RenderParameterFunctor(d->m_renderer->parameterManager(), d->m_renderer->shaderDataManager(), d->m_renderer->textureManager())));
+ registerBackendType<QParameter>(QBackendNodeFunctorPtr(new Render::RenderNodeFunctor<Render::RenderParameter, Render::ParameterManager>(d->m_renderer->parameterManager())));
registerBackendType<QShaderData>(QBackendNodeFunctorPtr(new Render::RenderShaderDataFunctor(d->m_renderer->shaderDataManager())));
}
diff --git a/src/render/backend/renderparameter.cpp b/src/render/backend/renderparameter.cpp
index 97716e843..46f635177 100644
--- a/src/render/backend/renderparameter.cpp
+++ b/src/render/backend/renderparameter.cpp
@@ -106,43 +106,15 @@ QVariant RenderParameter::toBackendValue(const QVariant &value)
if (node == Q_NULLPTR) {
return value;
} else if (qobject_cast<QAbstractTextureProvider*>(node)) {
- return QVariant::fromValue(m_textureManager->getOrCreateResource(node->id()));
+ return QVariant::fromValue(static_cast<RenderTexture*>(createBackendNode(node)));
} else if (qobject_cast<QShaderData*>(node)) {
- return QVariant::fromValue(m_shaderDataManager->getOrCreateResource(node->id()));
+ return QVariant::fromValue(static_cast<RenderShaderData*>(createBackendNode(node)));
} else {
qFatal("Texture and ShaderData are the only types of Node allowed as parameters");
return QVariant();
}
}
-RenderParameterFunctor::RenderParameterFunctor(ParameterManager *parameterManager, ShaderDataManager *shaderDataManager, TextureManager *textureManager)
- : m_parameterManager(parameterManager)
- , m_shaderDataManager(shaderDataManager)
- , m_textureManager(textureManager)
-{
-}
-
-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);
- return parameter;
-}
-
-QBackendNode *RenderParameterFunctor::get(QNode *frontend) const
-{
- return m_parameterManager->lookupResource(frontend->id());
-}
-
-void RenderParameterFunctor::destroy(QNode *frontend) const
-{
- m_parameterManager->releaseResource(frontend->id());
-}
-
} // Render
} // Qt3D
diff --git a/src/render/backend/renderparameter_p.h b/src/render/backend/renderparameter_p.h
index 3c7f5d7f9..f883be627 100644
--- a/src/render/backend/renderparameter_p.h
+++ b/src/render/backend/renderparameter_p.h
@@ -79,22 +79,6 @@ private:
QVariant m_value;
};
-class RenderParameterFunctor : public QBackendNodeFunctor
-{
-public:
- explicit RenderParameterFunctor(ParameterManager *parameterManager,
- ShaderDataManager *shaderDataManager,
- TextureManager *textureManager);
- 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;
-
-private:
- ParameterManager *m_parameterManager;
- ShaderDataManager *m_shaderDataManager;
- TextureManager *m_textureManager;
-};
-
} // Render
} // Qt3D