summaryrefslogtreecommitdiffstats
path: root/src/render/frontend/qrenderpass.cpp
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2014-09-19 08:37:03 +0200
committerSean Harmer <sean.harmer@kdab.com>2014-09-30 12:16:39 +0200
commit94bb50fba66435a078f30b1da9cf5507522ab136 (patch)
tree1c48f4e4463dd0f28fcd38efb259017987bbc8d6 /src/render/frontend/qrenderpass.cpp
parent616e8083872c953a31acc871749e05c621c18bd1 (diff)
Improved/Refactored cloning and doClone off all subclasses
Note: As we are using QScene during cloning, it is important that node hierarchy be created and added in the proper order (parent then child). Change-Id: I8fd53f7ca696ec9aca19cc70dc116ccba4154911 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/render/frontend/qrenderpass.cpp')
-rw-r--r--src/render/frontend/qrenderpass.cpp15
1 files changed, 9 insertions, 6 deletions
diff --git a/src/render/frontend/qrenderpass.cpp b/src/render/frontend/qrenderpass.cpp
index fd7168f84..8c805992c 100644
--- a/src/render/frontend/qrenderpass.cpp
+++ b/src/render/frontend/qrenderpass.cpp
@@ -67,18 +67,21 @@ QRenderPass::QRenderPass(QRenderPassPrivate &dd, QNode *parent)
{
}
-QRenderPass *QRenderPass::doClone(QNode *clonedParent) const
+QRenderPass *QRenderPass::doClone(bool isClone) const
{
Q_D(const QRenderPass);
- QRenderPass *pass = new QRenderPass(clonedParent);
+ QRenderPass *pass = new QRenderPass();
+
+ pass->copy(this);
+ pass->d_func()->m_isClone = isClone;
Q_FOREACH (QCriterion *crit, d->m_criteriaList)
- pass->addCriterion(qobject_cast<QCriterion *>(crit->clone(pass)));
+ pass->addCriterion(qobject_cast<QCriterion *>(crit->clone(isClone)));
Q_FOREACH (QParameterMapper *binding, d->m_bindings)
- pass->addBinding(qobject_cast<QParameterMapper *>(binding->clone(pass)));
+ pass->addBinding(qobject_cast<QParameterMapper *>(binding->clone(isClone)));
Q_FOREACH (QRenderState *renderState, d->m_renderStates)
- pass->addRenderState(qobject_cast<QRenderState *>(renderState->clone(pass)));
- pass->d_func()->m_shader = qobject_cast<QShaderProgram *>(d->m_shader->clone(pass));
+ pass->addRenderState(qobject_cast<QRenderState *>(renderState->clone(isClone)));
+ pass->d_func()->m_shader = qobject_cast<QShaderProgram *>(d->m_shader->clone(isClone));
return pass;
}