diff options
author | Kevin Ottens <kevin.ottens.ecortex@kdab.com> | 2014-11-21 08:38:50 +0100 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2014-11-27 15:03:46 +0100 |
commit | 01039e45417733e2d93f859f694eaba5ba7e4701 (patch) | |
tree | bd9099f57f9074b8bd73c3bcbcf934cd13bee3f8 /src/render/frontend/qrenderpass.cpp | |
parent | a0b300075f43432d3cbece6b2d25efa246923ba0 (diff) |
Make cloning available to third party QNodes
Third party QNode subclasses won't have access to QNodePrivate, so move
the clone() operation as a protected static method on QNode itself. This
way third party nodes can implement deep copy in their copy()
implementation as expected.
Change-Id: I59d0414f4ea9c679f2b7e197ea90e36bd8a915a4
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/render/frontend/qrenderpass.cpp')
-rw-r--r-- | src/render/frontend/qrenderpass.cpp | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/render/frontend/qrenderpass.cpp b/src/render/frontend/qrenderpass.cpp index 329cfad85..4fdcb71cf 100644 --- a/src/render/frontend/qrenderpass.cpp +++ b/src/render/frontend/qrenderpass.cpp @@ -63,14 +63,14 @@ void QRenderPass::copy(const QNode *ref) { QNode::copy(ref); const QRenderPass *other = static_cast<const QRenderPass*>(ref); - d_func()->m_shader = qobject_cast<QShaderProgram *>(QNodePrivate::get(other->d_func()->m_shader)->clone()); + d_func()->m_shader = qobject_cast<QShaderProgram *>(QNode::clone(other->d_func()->m_shader)); Q_FOREACH (QAnnotation *crit, other->d_func()->m_annotationList) - addAnnotation(qobject_cast<QAnnotation *>(QNodePrivate::get(crit)->clone())); + addAnnotation(qobject_cast<QAnnotation *>(QNode::clone(crit))); Q_FOREACH (QParameterMapping *binding, other->d_func()->m_bindings) - addBinding(qobject_cast<QParameterMapping *>(QNodePrivate::get(binding)->clone())); + addBinding(qobject_cast<QParameterMapping *>(QNode::clone(binding))); Q_FOREACH (QRenderState *renderState, other->d_func()->m_renderStates) - addRenderState(qobject_cast<QRenderState *>(QNodePrivate::get(renderState)->clone())); + addRenderState(qobject_cast<QRenderState *>(QNode::clone(renderState))); } QRenderPass::QRenderPass(QNode *parent) @@ -189,7 +189,7 @@ void QRenderPass::addBinding(QParameterMapping *binding) if (d->m_changeArbiter != Q_NULLPTR) { QScenePropertyChangePtr change(new QScenePropertyChange(NodeAdded, this)); change->setPropertyName(QByteArrayLiteral("binding")); - change->setValue(QVariant::fromValue(QNodePrivate::get(binding)->clone())); + change->setValue(QVariant::fromValue(QNode::clone(binding))); d->notifyObservers(change); } } @@ -226,7 +226,7 @@ void QRenderPass::addRenderState(QRenderState *state) if (d->m_changeArbiter != Q_NULLPTR) { QScenePropertyChangePtr change(new QScenePropertyChange(NodeAdded, this)); change->setPropertyName(QByteArrayLiteral("renderState")); - change->setValue(QVariant::fromValue(QNodePrivate::get(state)->clone())); + change->setValue(QVariant::fromValue(QNode::clone(state))); d->notifyObservers(change); } } |