diff options
author | Kevin Ottens <kevin.ottens@kdab.com> | 2015-02-04 17:34:34 +0100 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2015-02-08 15:01:59 +0000 |
commit | 6ac96d11449769118dc1f5b443fc7112bed3facc (patch) | |
tree | 7691ae1280398f0dea4b9bba83cb76042822d76a /src/render/backend | |
parent | 906891f92bcdde3cad6618114689a57899bacb83 (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.cpp | 2 | ||||
-rw-r--r-- | src/render/backend/renderparameter.cpp | 32 | ||||
-rw-r--r-- | src/render/backend/renderparameter_p.h | 16 |
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 |