summaryrefslogtreecommitdiffstats
path: root/src/render/frontend/qmaterial.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/render/frontend/qmaterial.cpp')
-rw-r--r--src/render/frontend/qmaterial.cpp30
1 files changed, 15 insertions, 15 deletions
diff --git a/src/render/frontend/qmaterial.cpp b/src/render/frontend/qmaterial.cpp
index ba1102052..c44bd77b8 100644
--- a/src/render/frontend/qmaterial.cpp
+++ b/src/render/frontend/qmaterial.cpp
@@ -56,24 +56,28 @@ QMaterialPrivate::QMaterialPrivate(QMaterial *qq)
{
}
+void QMaterialPrivate::copy(const QNodePrivate *ref)
+{
+ QAbstractMaterialPrivate::copy(ref);
+}
+
QMaterial::QMaterial(QMaterialPrivate &dd, QNode *parent)
: QAbstractMaterial(dd, parent)
{
}
-QMaterial *QMaterial::doClone(bool isClone) const
+QMaterial *QMaterial::doClone() const
{
Q_D(const QMaterial);
QMaterial *mat = new QMaterial();
- mat->copy(this);
- mat->d_func()->m_isClone = isClone;
+ mat->d_func()->copy(d_func());
Q_FOREACH (QParameter *p, d->m_parameters)
- mat->addParameter(qobject_cast<QParameter *>(p->clone(isClone)));
+ mat->addParameter(qobject_cast<QParameter *>(QNodePrivate::get(p)->clone()));
if (d->m_effect != Q_NULLPTR)
- mat->setEffect(qobject_cast<QAbstractEffect *>(d->m_effect->clone(isClone)));
+ mat->setEffect(qobject_cast<QAbstractEffect *>(QNodePrivate::get(d->m_effect)->clone()));
return mat;
}
@@ -83,10 +87,6 @@ QMaterial::QMaterial(QNode *parent)
{
}
-void QMaterial::copy(const QNode *ref)
-{
- QAbstractMaterial::copy(ref);
-}
void QMaterial::setEffect(QAbstractEffect *effect)
{
@@ -105,14 +105,14 @@ void QMaterial::addParameter(QParameter *parameter)
// Or not previously added as a child of the current node so that
// 1) The backend gets notified about it's creation
// 2) When the current node is destroyed, it gets destroyed as well
- if (!parameter->parent() || parameter->parent() == this)
- QNode::addChild(parameter);
+ if (!parameter->parent())
+ parameter->setParent(this);
if (d->m_changeArbiter != Q_NULLPTR) {
QScenePropertyChangePtr change(new QScenePropertyChange(NodeAdded, this));
change->setPropertyName(QByteArrayLiteral("parameter"));
- change->setValue(QVariant::fromValue(parameter->clone()));
- notifyObservers(change);
+ change->setValue(QVariant::fromValue(QNodePrivate::get(parameter)->clone()));
+ d->notifyObservers(change);
}
}
}
@@ -123,8 +123,8 @@ void QMaterial::removeParameter(QParameter *parameter)
if (d->m_changeArbiter != Q_NULLPTR) {
QScenePropertyChangePtr change(new QScenePropertyChange(NodeRemoved, this));
change->setPropertyName(QByteArrayLiteral("parameter"));
- change->setValue(QVariant::fromValue(parameter->clone()));
- notifyObservers(change);
+ change->setValue(QVariant::fromValue(QNodePrivate::get(parameter)->clone()));
+ d->notifyObservers(change);
}
d->m_parameters.removeOne(parameter);
}