summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2015-02-25 15:38:42 +0100
committerSean Harmer <sean.harmer@kdab.com>2015-02-28 16:28:54 +0000
commit66fc1e35db664ecaf0b37c855eea7391c0576773 (patch)
treecb805d9a294c40fb9a08cc985ee41366e962f20e /src
parent653ff3d4d5f992b64c4949e9741f4213a81a9f42 (diff)
ChangeArbiter/SceneChange: use id as change subject
Instead of having a QNode* or QObservable as the subject of a change, we use it's unique NodeId instead. That will prevent the ChangeArbiter from trying to distribute changes by looking at a QNode/QObservable id when the QNode/QObservable might have been destroyed in the meantime. Change-Id: Ia419d5b841434fd65522c8c65de552089cfe97cf Task-number: QTBUG-44628 Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src')
-rw-r--r--src/core/nodes/qcomponent.cpp4
-rw-r--r--src/core/nodes/qentity.cpp4
-rw-r--r--src/core/nodes/qnode.cpp9
-rw-r--r--src/core/qbackendscenepropertychange.cpp9
-rw-r--r--src/core/qbackendscenepropertychange.h5
-rw-r--r--src/core/qchangearbiter.cpp9
-rw-r--r--src/core/qscenechange.cpp38
-rw-r--r--src/core/qscenechange.h14
-rw-r--r--src/core/qscenechange_p.h3
-rw-r--r--src/core/qscenepropertychange.cpp18
-rw-r--r--src/core/qscenepropertychange.h6
-rw-r--r--src/input/keyboardinput.cpp4
-rw-r--r--src/render/backend/renderscene.cpp4
-rw-r--r--src/render/frontend/framegraph-components/qrenderpassfilter.cpp4
-rw-r--r--src/render/frontend/framegraph-components/qsortmethod.cpp4
-rw-r--r--src/render/frontend/framegraph-components/qtechniquefilter.cpp4
-rw-r--r--src/render/frontend/qabstractmesh.cpp2
-rw-r--r--src/render/frontend/qabstracttextureimage.cpp2
-rw-r--r--src/render/frontend/qabstracttextureprovider.cpp10
-rw-r--r--src/render/frontend/qeffect.cpp8
-rw-r--r--src/render/frontend/qmaterial.cpp8
-rw-r--r--src/render/frontend/qparameter.cpp2
-rw-r--r--src/render/frontend/qrenderpass.cpp16
-rw-r--r--src/render/frontend/qrendertarget.cpp4
-rw-r--r--src/render/frontend/qtechnique.cpp14
25 files changed, 81 insertions, 124 deletions
diff --git a/src/core/nodes/qcomponent.cpp b/src/core/nodes/qcomponent.cpp
index a05b9980b..2827db9f9 100644
--- a/src/core/nodes/qcomponent.cpp
+++ b/src/core/nodes/qcomponent.cpp
@@ -59,7 +59,7 @@ void QComponentPrivate::addEntity(QEntity *entity)
// We notify only if we have a QChangeArbiter
if (m_changeArbiter != Q_NULLPTR) {
Q_Q(QComponent);
- QScenePropertyChangePtr e(new QScenePropertyChange(ComponentAdded, q));
+ QScenePropertyChangePtr e(new QScenePropertyChange(ComponentAdded, QSceneChange::Node, q->id()));
e->setPropertyName("entity");
e->setValue(QVariant::fromValue(entity->id()));
notifyObservers(e);
@@ -71,7 +71,7 @@ void QComponentPrivate::removeEntity(QEntity *entity)
// We notify only if we have a QChangeArbiter
if (m_changeArbiter != Q_NULLPTR) {
Q_Q(QComponent);
- QScenePropertyChangePtr e(new QScenePropertyChange(ComponentRemoved, q));
+ QScenePropertyChangePtr e(new QScenePropertyChange(ComponentRemoved, QSceneChange::Node, q->id()));
e->setPropertyName("entity");
e->setValue(QVariant::fromValue(entity->id()));
notifyObservers(e);
diff --git a/src/core/nodes/qentity.cpp b/src/core/nodes/qentity.cpp
index a0f980b5a..0e8c596d0 100644
--- a/src/core/nodes/qentity.cpp
+++ b/src/core/nodes/qentity.cpp
@@ -117,7 +117,7 @@ void QEntity::addComponent(QComponent *comp)
// Sending a full fledged component in the notification as we'll need
// to know which type of component it was and its properties to create
// the backend object
- QScenePropertyChangePtr propertyChange(new QScenePropertyChange(ComponentAdded, this));
+ QScenePropertyChangePtr propertyChange(new QScenePropertyChange(ComponentAdded, QSceneChange::Node, id()));
propertyChange->setPropertyName("component");
propertyChange->setValue(QVariant::fromValue(QNodePtr(QNode::clone(comp), &QNodePrivate::nodePtrDeleter)));
d->notifyObservers(propertyChange);
@@ -137,7 +137,7 @@ void QEntity::removeComponent(QComponent *comp)
// Sending just the component id as it is the only part needed to
// cleanup the backend object. This way we avoid a clone which might
// fail in the case of large scenes.
- QScenePropertyChangePtr propertyChange(new QScenePropertyChange(ComponentRemoved, this));
+ QScenePropertyChangePtr propertyChange(new QScenePropertyChange(ComponentRemoved, QSceneChange::Node, id()));
propertyChange->setValue(QVariant::fromValue(comp->id()));
propertyChange->setPropertyName("componentId");
d->notifyObservers(propertyChange);
diff --git a/src/core/nodes/qnode.cpp b/src/core/nodes/qnode.cpp
index c4b6088e6..4de2f85a5 100644
--- a/src/core/nodes/qnode.cpp
+++ b/src/core/nodes/qnode.cpp
@@ -82,8 +82,7 @@ void QNodePrivate::addChild(QNode *childNode)
// We notify only if we have a QChangeArbiter
if (m_changeArbiter != Q_NULLPTR) {
- Q_Q(QNode);
- QScenePropertyChangePtr e(new QScenePropertyChange(NodeCreated, q));
+ QScenePropertyChangePtr e(new QScenePropertyChange(NodeCreated, QSceneChange::Node, m_id));
e->setPropertyName("node");
// We need to clone the parent of the childNode we send
QNode *parentClone = QNode::clone(q_func());
@@ -109,8 +108,7 @@ void QNodePrivate::removeChild(QNode *childNode)
// Notify only if child isn't a clone
if (m_changeArbiter != Q_NULLPTR) {
- Q_Q(QNode);
- QScenePropertyChangePtr e(new QScenePropertyChange(NodeAboutToBeDeleted, q));
+ QScenePropertyChangePtr e(new QScenePropertyChange(NodeAboutToBeDeleted, QSceneChange::Node, m_id));
e->setPropertyName("node");
// We need to clone the parent of the childNode we send
// QNode *parentClone = QNode::clone(childNode->parentNode());
@@ -229,8 +227,7 @@ void QNodePrivate::notifyPropertyChange(const char *name, const QVariant &value)
if (m_blockNotifications)
return;
- Q_Q(QNode);
- QScenePropertyChangePtr e(new QScenePropertyChange(NodeUpdated, q));
+ QScenePropertyChangePtr e(new QScenePropertyChange(NodeUpdated, QSceneChange::Node, m_id));
e->setPropertyName(name);
e->setValue(value);
notifyObservers(e);
diff --git a/src/core/qbackendscenepropertychange.cpp b/src/core/qbackendscenepropertychange.cpp
index cdbce641a..7d33414f7 100644
--- a/src/core/qbackendscenepropertychange.cpp
+++ b/src/core/qbackendscenepropertychange.cpp
@@ -52,8 +52,8 @@ QBackendScenePropertyChangePrivate::~QBackendScenePropertyChangePrivate()
{
}
-QBackendScenePropertyChange::QBackendScenePropertyChange(ChangeFlag type, QBackendNode *subject, QSceneChange::Priority priority)
- : QScenePropertyChange(*new QBackendScenePropertyChangePrivate(this), type, subject->d_func(), priority)
+QBackendScenePropertyChange::QBackendScenePropertyChange(ChangeFlag type, const QNodeId &subjectId, QSceneChange::Priority priority)
+ : QScenePropertyChange(*new QBackendScenePropertyChangePrivate(this), type, Observable, subjectId, priority)
{
}
@@ -61,6 +61,7 @@ QBackendScenePropertyChange::~QBackendScenePropertyChange()
{
}
+// TO DO get rid off setTargetNode, use the subject instead ??
void QBackendScenePropertyChange::setTargetNode(const QNodeId &id)
{
Q_D(QBackendScenePropertyChange);
@@ -78,8 +79,8 @@ QBackendScenePropertyChange::QBackendScenePropertyChange(QBackendScenePropertyCh
{
}
-QBackendScenePropertyChange::QBackendScenePropertyChange(QBackendScenePropertyChangePrivate &dd, ChangeFlag type, QBackendNode *subject, QSceneChange::Priority priority)
- : QScenePropertyChange(dd, type, subject->d_func(), priority)
+QBackendScenePropertyChange::QBackendScenePropertyChange(QBackendScenePropertyChangePrivate &dd, ChangeFlag type, const QNodeId &subjectId, QSceneChange::Priority priority)
+ : QScenePropertyChange(dd, type, Observable, subjectId, priority)
{
}
diff --git a/src/core/qbackendscenepropertychange.h b/src/core/qbackendscenepropertychange.h
index 8f26f9627..382418500 100644
--- a/src/core/qbackendscenepropertychange.h
+++ b/src/core/qbackendscenepropertychange.h
@@ -50,7 +50,7 @@ class QBackendNode;
class QT3DCORESHARED_EXPORT QBackendScenePropertyChange : public QScenePropertyChange
{
public:
- QBackendScenePropertyChange(ChangeFlag type, QBackendNode *subject,
+ QBackendScenePropertyChange(ChangeFlag type, const QNodeId &subjectId,
Priority priority = Standard);
virtual ~QBackendScenePropertyChange();
@@ -60,8 +60,7 @@ public:
protected:
Q_DECLARE_PRIVATE(QBackendScenePropertyChange)
QBackendScenePropertyChange(QBackendScenePropertyChangePrivate &dd);
- QBackendScenePropertyChange(QBackendScenePropertyChangePrivate &dd, ChangeFlag type,
- QBackendNode *subject, Priority priority = Standard);
+ QBackendScenePropertyChange(QBackendScenePropertyChangePrivate &dd, ChangeFlag type, const QNodeId &subjectId, Priority priority = Standard);
};
typedef QSharedPointer<QBackendScenePropertyChange> QBackendScenePropertyChangePtr;
diff --git a/src/core/qchangearbiter.cpp b/src/core/qchangearbiter.cpp
index 86ddc7d72..1d111d642 100644
--- a/src/core/qchangearbiter.cpp
+++ b/src/core/qchangearbiter.cpp
@@ -124,8 +124,7 @@ void QChangeArbiter::distributeQueueChanges(QChangeQueue *changeQueue)
switch (change->observableType()) {
case QSceneChange::Observable: {
- QObservableInterface *subject = change->subject().m_observable;
- QNodeId nodeId = m_scene->nodeIdFromObservable(subject);
+ const QNodeId nodeId = change->subjectId();
if (m_nodeObservations.contains(nodeId)) {
QObserverList &observers = m_nodeObservations[nodeId];
Q_FOREACH (const QObserverPair&observer, observers) {
@@ -139,9 +138,9 @@ void QChangeArbiter::distributeQueueChanges(QChangeQueue *changeQueue)
}
case QSceneChange::Node: {
- QNode *subject = change->subject().m_node;
- if (m_nodeObservations.contains(subject->id())) {
- QObserverList &observers = m_nodeObservations[subject->id()];
+ const QNodeId nodeId = change->subjectId();
+ if (m_nodeObservations.contains(nodeId)) {
+ QObserverList &observers = m_nodeObservations[nodeId];
Q_FOREACH (const QObserverPair&observer, observers) {
if ((change->type() & observer.first))
observer.second->sceneChangeEvent(change);
diff --git a/src/core/qscenechange.cpp b/src/core/qscenechange.cpp
index c5bb1622d..20218f04c 100644
--- a/src/core/qscenechange.cpp
+++ b/src/core/qscenechange.cpp
@@ -67,26 +67,15 @@ QSceneChangePrivate::~QSceneChangePrivate()
{
}
-QSceneChange::QSceneChange(ChangeFlag type, QObservableInterface *observable, QSceneChange::Priority priority)
+QSceneChange::QSceneChange(ChangeFlag type, ObservableType observableType, const QNodeId &subjectId, QSceneChange::Priority priority)
: d_ptr(new QSceneChangePrivate(this))
{
Q_D(QSceneChange);
d->m_type = type;
d->m_priority = priority;
d->m_timestamp = QDateTime::currentMSecsSinceEpoch();
- d->m_subject.m_observable = observable;
- d->m_subjectType = Observable;
-}
-
-QSceneChange::QSceneChange(ChangeFlag type, QNode *node, QSceneChange::Priority priority)
- : d_ptr(new QSceneChangePrivate(this))
-{
- Q_D(QSceneChange);
- d->m_type = type;
- d->m_priority = priority;
- d->m_timestamp = QDateTime::currentMSecsSinceEpoch();
- d->m_subject.m_node = node;
- d->m_subjectType = Node;
+ d->m_subjectId = subjectId;
+ d->m_subjectType = observableType;
}
QSceneChange::~QSceneChange()
@@ -99,26 +88,15 @@ QSceneChange::QSceneChange(QSceneChangePrivate &dd)
{
}
-QSceneChange::QSceneChange(QSceneChangePrivate &dd, ChangeFlag type, QObservableInterface *observable, QSceneChange::Priority priority)
- : d_ptr(&dd)
-{
- Q_D(QSceneChange);
- d->m_type = type;
- d->m_priority = priority;
- d->m_timestamp = QDateTime::currentMSecsSinceEpoch();
- d->m_subject.m_observable = observable;
- d->m_subjectType = Observable;
-}
-
-QSceneChange::QSceneChange(QSceneChangePrivate &dd, ChangeFlag type, QNode *node, QSceneChange::Priority priority)
+QSceneChange::QSceneChange(QSceneChangePrivate &dd, ChangeFlag type, ObservableType observableType, const QNodeId &subjectId, QSceneChange::Priority priority)
: d_ptr(&dd)
{
Q_D(QSceneChange);
d->m_type = type;
d->m_priority = priority;
d->m_timestamp = QDateTime::currentMSecsSinceEpoch();
- d->m_subject.m_node = node;
- d->m_subjectType = Node;
+ d->m_subjectId = subjectId;
+ d->m_subjectType = observableType;
}
ChangeFlag QSceneChange::type() const
@@ -145,10 +123,10 @@ QSceneChange::ObservableType QSceneChange::observableType() const
return d->m_subjectType;
}
-QSceneChange::SubjectUnion QSceneChange::subject() const
+QNodeId QSceneChange::subjectId() const
{
Q_D(const QSceneChange);
- return d->m_subject;
+ return d->m_subjectId;
}
} // Qt3D
diff --git a/src/core/qscenechange.h b/src/core/qscenechange.h
index f52871b67..3c22638d3 100644
--- a/src/core/qscenechange.h
+++ b/src/core/qscenechange.h
@@ -39,6 +39,7 @@
#include <Qt3DCore/qt3dcore_global.h>
#include <QSharedPointer>
+#include <Qt3DCore/qnodeid.h>
QT_BEGIN_NAMESPACE
@@ -76,27 +77,20 @@ public:
Node
};
- union SubjectUnion {
- QObservableInterface *m_observable;
- QNode *m_node;
- };
-
- QSceneChange(ChangeFlag type, QObservableInterface *observable, Priority priority = Standard);
- QSceneChange(ChangeFlag type, QNode *node, Priority priority = Standard);
+ QSceneChange(ChangeFlag type, ObservableType observableType, const QNodeId &subjectId, Priority priority = Standard);
virtual ~QSceneChange();
ChangeFlag type() const;
qint64 timestamp() const;
QSceneChange::Priority priority() const;
QSceneChange::ObservableType observableType() const;
- QSceneChange::SubjectUnion subject() const;
+ QNodeId subjectId() const;
protected:
Q_DECLARE_PRIVATE(QSceneChange)
QSceneChangePrivate *d_ptr;
QSceneChange(QSceneChangePrivate &dd);
- QSceneChange(QSceneChangePrivate &dd, ChangeFlag type, QObservableInterface *observable, Priority priority = Standard);
- QSceneChange(QSceneChangePrivate &dd, ChangeFlag type, QNode *node, Priority priority = Standard);
+ QSceneChange(QSceneChangePrivate &dd, ChangeFlag type, ObservableType observableType, const QNodeId &subjectId, Priority priority = Standard);
// TODO: add timestamp from central clock and priority level
// These can be used to resolve any conflicts between events
diff --git a/src/core/qscenechange_p.h b/src/core/qscenechange_p.h
index 40748e444..b903b1035 100644
--- a/src/core/qscenechange_p.h
+++ b/src/core/qscenechange_p.h
@@ -44,6 +44,7 @@ QT_BEGIN_NAMESPACE
namespace Qt3D {
class QSceneChange;
+class QNodeId;
class QSceneChangePrivate
{
@@ -55,7 +56,7 @@ public :
QSceneChange *q_ptr;
- QSceneChange::SubjectUnion m_subject;
+ QNodeId m_subjectId;
QSceneChange::ObservableType m_subjectType;
ChangeFlag m_type;
QSceneChange::Priority m_priority;
diff --git a/src/core/qscenepropertychange.cpp b/src/core/qscenepropertychange.cpp
index 14144b157..9daac1bd0 100644
--- a/src/core/qscenepropertychange.cpp
+++ b/src/core/qscenepropertychange.cpp
@@ -67,8 +67,8 @@ void QScenePropertyChangePrivate::operator delete(void *ptr, size_t size)
QScenePropertyChangePrivate::m_allocator->deallocateRawMemory(ptr, size);
}
-QScenePropertyChange::QScenePropertyChange(ChangeFlag type, QObservableInterface *subject, QSceneChange::Priority priority)
- : QSceneChange(*new QScenePropertyChangePrivate(this), type, subject, priority)
+QScenePropertyChange::QScenePropertyChange(ChangeFlag type, ObservableType observableType, const QNodeId &subjectId, QSceneChange::Priority priority)
+ : QSceneChange(*new QScenePropertyChangePrivate(this), type, observableType, subjectId, priority)
{
}
@@ -77,8 +77,8 @@ QScenePropertyChange::QScenePropertyChange(QScenePropertyChangePrivate &dd)
{
}
-QScenePropertyChange::QScenePropertyChange(ChangeFlag type, QNode *node, QSceneChange::Priority priority)
- : QSceneChange(*new QScenePropertyChangePrivate(this), type, node, priority)
+QScenePropertyChange::QScenePropertyChange(QScenePropertyChangePrivate &dd, ChangeFlag type, ObservableType observableType, const QNodeId &subjectId, QSceneChange::Priority priority)
+ : QSceneChange(dd, type, observableType, subjectId, priority)
{
}
@@ -86,16 +86,6 @@ QScenePropertyChange::~QScenePropertyChange()
{
}
-QScenePropertyChange::QScenePropertyChange(QScenePropertyChangePrivate &dd, ChangeFlag type, QObservableInterface *subject, QSceneChange::Priority priority)
- : QSceneChange(dd, type, subject, priority)
-{
-}
-
-QScenePropertyChange::QScenePropertyChange(QScenePropertyChangePrivate &dd, ChangeFlag type, QNode *node, QSceneChange::Priority priority)
- : QSceneChange(dd, type, node, priority)
-{
-}
-
const char *QScenePropertyChange::propertyName() const
{
Q_D(const QScenePropertyChange);
diff --git a/src/core/qscenepropertychange.h b/src/core/qscenepropertychange.h
index 8e1363b9c..dcedf20a5 100644
--- a/src/core/qscenepropertychange.h
+++ b/src/core/qscenepropertychange.h
@@ -48,7 +48,7 @@ class QScenePropertyChangePrivate;
class QT3DCORESHARED_EXPORT QScenePropertyChange : public QSceneChange
{
public:
- QScenePropertyChange(ChangeFlag type, QNode *node, Priority priority = Standard);
+ QScenePropertyChange(ChangeFlag type, ObservableType observableType, const QNodeId &subjectId, Priority priority = Standard);
virtual ~QScenePropertyChange();
const char *propertyName() const;
@@ -62,10 +62,8 @@ public:
protected:
Q_DECLARE_PRIVATE(QScenePropertyChange)
- QScenePropertyChange(ChangeFlag type, QObservableInterface *subject, Priority priority = Standard);
QScenePropertyChange(QScenePropertyChangePrivate &dd);
- QScenePropertyChange(QScenePropertyChangePrivate &dd, ChangeFlag type, QObservableInterface *subject, Priority priority = Standard);
- QScenePropertyChange(QScenePropertyChangePrivate &dd, ChangeFlag type, QNode *node, Priority priority = Standard);
+ QScenePropertyChange(QScenePropertyChangePrivate &dd, ChangeFlag type, ObservableType observableType, const QNodeId &subjectId, Priority priority = Standard);
};
typedef QSharedPointer<QScenePropertyChange> QScenePropertyChangePtr;
diff --git a/src/input/keyboardinput.cpp b/src/input/keyboardinput.cpp
index 23edf1a89..1f0b80e5d 100644
--- a/src/input/keyboardinput.cpp
+++ b/src/input/keyboardinput.cpp
@@ -83,7 +83,7 @@ void KeyboardInput::setFocus(bool focus)
{
if (focus != m_focus) {
m_focus = focus;
- QBackendScenePropertyChangePtr e(new QBackendScenePropertyChange(NodeUpdated, this));
+ QBackendScenePropertyChangePtr e(new QBackendScenePropertyChange(NodeUpdated, peerUuid()));
e->setTargetNode(peerUuid());
e->setPropertyName("focus");
e->setValue(m_focus);
@@ -93,7 +93,7 @@ void KeyboardInput::setFocus(bool focus)
void KeyboardInput::keyEvent(const Q3DKeyEventPtr &event)
{
- QBackendScenePropertyChangePtr e(new QBackendScenePropertyChange(NodeUpdated, this));
+ QBackendScenePropertyChangePtr e(new QBackendScenePropertyChange(NodeUpdated, peerUuid()));
e->setTargetNode(peerUuid());
e->setPropertyName("event");
e->setValue(QVariant::fromValue(event));
diff --git a/src/render/backend/renderscene.cpp b/src/render/backend/renderscene.cpp
index cf2ebb718..d653b80ae 100644
--- a/src/render/backend/renderscene.cpp
+++ b/src/render/backend/renderscene.cpp
@@ -78,14 +78,14 @@ QUrl RenderScene::source() const
void RenderScene::setSceneSubtree(QEntity *subTree)
{
- QBackendScenePropertyChangePtr e(new QBackendScenePropertyChange(NodeUpdated, this));
+ QBackendScenePropertyChangePtr e(new QBackendScenePropertyChange(NodeUpdated, peerUuid()));
e->setPropertyName("scene");
// The Frontend element has to perform the clone
// So that the objects are created in the main thread
e->setValue(QVariant::fromValue(subTree));
e->setTargetNode(peerUuid());
notifyObservers(e);
- QBackendScenePropertyChangePtr e2(new QBackendScenePropertyChange(NodeUpdated, this));
+ QBackendScenePropertyChangePtr e2(new QBackendScenePropertyChange(NodeUpdated, peerUuid()));
e2->setPropertyName("status");
e2->setValue(subTree != Q_NULLPTR ? QAbstractSceneLoader::Loaded : QAbstractSceneLoader::Error);
e2->setTargetNode(peerUuid());
diff --git a/src/render/frontend/framegraph-components/qrenderpassfilter.cpp b/src/render/frontend/framegraph-components/qrenderpassfilter.cpp
index 5e50706d2..5f22b90f2 100644
--- a/src/render/frontend/framegraph-components/qrenderpassfilter.cpp
+++ b/src/render/frontend/framegraph-components/qrenderpassfilter.cpp
@@ -73,7 +73,7 @@ void QRenderPassFilter::addInclude(QAnnotation *annotation)
annotation->setParent(this);
if (d->m_changeArbiter != Q_NULLPTR) {
- QScenePropertyChangePtr propertyChange(new QScenePropertyChange(NodeAdded, this));
+ QScenePropertyChangePtr propertyChange(new QScenePropertyChange(NodeAdded, QSceneChange::Node, id()));
propertyChange->setPropertyName("include");
propertyChange->setValue(QVariant::fromValue(annotation));
d->notifyObservers(propertyChange);
@@ -85,7 +85,7 @@ void QRenderPassFilter::removeInclude(QAnnotation *annotation)
{
Q_D(QRenderPassFilter);
if (d->m_changeArbiter != Q_NULLPTR) {
- QScenePropertyChangePtr propertyChange(new QScenePropertyChange(NodeRemoved, this));
+ QScenePropertyChangePtr propertyChange(new QScenePropertyChange(NodeRemoved, QSceneChange::Node, id()));
propertyChange->setPropertyName("include");
propertyChange->setValue(QVariant::fromValue(annotation));
d->notifyObservers(propertyChange);
diff --git a/src/render/frontend/framegraph-components/qsortmethod.cpp b/src/render/frontend/framegraph-components/qsortmethod.cpp
index 04eb3b3ce..08725b6f6 100644
--- a/src/render/frontend/framegraph-components/qsortmethod.cpp
+++ b/src/render/frontend/framegraph-components/qsortmethod.cpp
@@ -77,7 +77,7 @@ void QSortMethod::addCriterion(QSortCriterion *criterion)
criterion->setParent(this);
if (d->m_changeArbiter != Q_NULLPTR) {
- QScenePropertyChangePtr propertyChange(new QScenePropertyChange(NodeAdded, this));
+ QScenePropertyChangePtr propertyChange(new QScenePropertyChange(NodeAdded, QSceneChange::Node, id()));
propertyChange->setPropertyName("sortCriterion");
propertyChange->setValue(QVariant::fromValue(criterion));
d->notifyObservers(propertyChange);
@@ -89,7 +89,7 @@ void QSortMethod::removeCriterion(QSortCriterion *criterion)
{
Q_D(QSortMethod);
if (d->m_changeArbiter != Q_NULLPTR) {
- QScenePropertyChangePtr propertyChange(new QScenePropertyChange(NodeRemoved, this));
+ QScenePropertyChangePtr propertyChange(new QScenePropertyChange(NodeRemoved, QSceneChange::Node, id()));
propertyChange->setPropertyName("sortCriterion");
propertyChange->setValue(QVariant::fromValue(criterion));
d->notifyObservers(propertyChange);
diff --git a/src/render/frontend/framegraph-components/qtechniquefilter.cpp b/src/render/frontend/framegraph-components/qtechniquefilter.cpp
index ee7507810..4fbbb0c75 100644
--- a/src/render/frontend/framegraph-components/qtechniquefilter.cpp
+++ b/src/render/frontend/framegraph-components/qtechniquefilter.cpp
@@ -88,7 +88,7 @@ void QTechniqueFilter::addRequirement(QAnnotation *criterion)
criterion->setParent(this);
if (d->m_changeArbiter != Q_NULLPTR) {
- QScenePropertyChangePtr propertyChange(new QScenePropertyChange(NodeAdded, this));
+ QScenePropertyChangePtr propertyChange(new QScenePropertyChange(NodeAdded, QSceneChange::Node, id()));
propertyChange->setPropertyName("require");
propertyChange->setValue(QVariant::fromValue(criterion));
d->notifyObservers(propertyChange);
@@ -99,7 +99,7 @@ void QTechniqueFilter::removeRequirement(QAnnotation *criterion)
{
Q_D(QTechniqueFilter);
if (d->m_changeArbiter != Q_NULLPTR) {
- QScenePropertyChangePtr propertyChange(new QScenePropertyChange(NodeRemoved, this));
+ QScenePropertyChangePtr propertyChange(new QScenePropertyChange(NodeRemoved, QSceneChange::Node, id()));
propertyChange->setPropertyName("require");
propertyChange->setValue(QVariant::fromValue(criterion->id()));
d->notifyObservers(propertyChange);
diff --git a/src/render/frontend/qabstractmesh.cpp b/src/render/frontend/qabstractmesh.cpp
index f88e6c42b..94495f23d 100644
--- a/src/render/frontend/qabstractmesh.cpp
+++ b/src/render/frontend/qabstractmesh.cpp
@@ -82,7 +82,7 @@ void QAbstractMesh::update()
{
Q_D(QAbstractMesh);
if (d->m_changeArbiter != Q_NULLPTR) {
- QScenePropertyChangePtr change(new QScenePropertyChange(NodeUpdated, this));
+ QScenePropertyChangePtr change(new QScenePropertyChange(NodeUpdated, QSceneChange::Node, id()));
change->setPropertyName("meshFunctor");
change->setValue(QVariant::fromValue(meshFunctor()));
d->notifyObservers(change);
diff --git a/src/render/frontend/qabstracttextureimage.cpp b/src/render/frontend/qabstracttextureimage.cpp
index 229e324d0..8f012652c 100644
--- a/src/render/frontend/qabstracttextureimage.cpp
+++ b/src/render/frontend/qabstracttextureimage.cpp
@@ -146,7 +146,7 @@ void QAbstractTextureImage::update()
{
Q_D(QAbstractTextureImage);
if (d->m_changeArbiter != Q_NULLPTR) {
- QScenePropertyChangePtr change(new QScenePropertyChange(NodeUpdated, this));
+ QScenePropertyChangePtr change(new QScenePropertyChange(NodeUpdated, QSceneChange::Node, id()));
change->setPropertyName("dataFunctor");
change->setValue(QVariant::fromValue(dataFunctor()));
d->notifyObservers(change);
diff --git a/src/render/frontend/qabstracttextureprovider.cpp b/src/render/frontend/qabstracttextureprovider.cpp
index 087c5ed61..8d08b76b6 100644
--- a/src/render/frontend/qabstracttextureprovider.cpp
+++ b/src/render/frontend/qabstracttextureprovider.cpp
@@ -288,7 +288,7 @@ void QAbstractTextureProvider::addTextureImage(QAbstractTextureImage *textureIma
textureImage->setParent(this);
if (d->m_changeArbiter != Q_NULLPTR) {
- QScenePropertyChangePtr change(new QScenePropertyChange(NodeAdded, this));
+ QScenePropertyChangePtr change(new QScenePropertyChange(NodeAdded, QSceneChange::Node, id()));
change->setPropertyName("textureImage");
change->setValue(QVariant::fromValue(textureImage->id()));
d->notifyObservers(change);
@@ -303,7 +303,7 @@ void QAbstractTextureProvider::removeTextureImage(QAbstractTextureImage *texture
{
Q_D(QAbstractTextureProvider);
if (d->m_changeArbiter != Q_NULLPTR) {
- QScenePropertyChangePtr change(new QScenePropertyChange(NodeRemoved, this));
+ QScenePropertyChangePtr change(new QScenePropertyChange(NodeRemoved, QSceneChange::Node, id()));
change->setPropertyName("textureImage");
change->setValue(QVariant::fromValue(textureImage->id()));
d->notifyObservers(change);
@@ -391,21 +391,21 @@ void QAbstractTextureProvider::setWrapMode(const QTextureWrapMode &wrapMode)
Q_D(QAbstractTextureProvider);
if (d->m_wrapMode.x() != wrapMode.x()) {
d->m_wrapMode.setX(wrapMode.x());
- QScenePropertyChangePtr e(new QScenePropertyChange(NodeUpdated, this));
+ QScenePropertyChangePtr e(new QScenePropertyChange(NodeUpdated, QSceneChange::Node, id()));
e->setPropertyName("wrapModeX");
e->setValue(static_cast<int>(d->m_wrapMode.x()));
d->notifyObservers(e);
}
if (d->m_wrapMode.y() != wrapMode.y()) {
d->m_wrapMode.setY(wrapMode.y());
- QScenePropertyChangePtr e(new QScenePropertyChange(NodeUpdated, this));
+ QScenePropertyChangePtr e(new QScenePropertyChange(NodeUpdated, QSceneChange::Node, id()));
e->setPropertyName("wrapModeY");
e->setValue(static_cast<int>(d->m_wrapMode.y()));
d->notifyObservers(e);
}
if (d->m_wrapMode.z() != wrapMode.z()) {
d->m_wrapMode.setZ(wrapMode.z());
- QScenePropertyChangePtr e(new QScenePropertyChange(NodeUpdated, this));
+ QScenePropertyChangePtr e(new QScenePropertyChange(NodeUpdated, QSceneChange::Node, id()));
e->setPropertyName("wrapModeZ");
e->setValue(static_cast<int>(d->m_wrapMode.z()));
d->notifyObservers(e);
diff --git a/src/render/frontend/qeffect.cpp b/src/render/frontend/qeffect.cpp
index 781173c73..57527fc4b 100644
--- a/src/render/frontend/qeffect.cpp
+++ b/src/render/frontend/qeffect.cpp
@@ -84,7 +84,7 @@ void QEffect::addParameter(QParameter *parameter)
parameter->setParent(this);
if (d->m_changeArbiter != Q_NULLPTR) {
- QScenePropertyChangePtr change(new QScenePropertyChange(NodeAdded, this));
+ QScenePropertyChangePtr change(new QScenePropertyChange(NodeAdded, QSceneChange::Node, id()));
change->setPropertyName("parameter");
change->setValue(QVariant::fromValue(parameter->id()));
d->notifyObservers(change);
@@ -97,7 +97,7 @@ void QEffect::removeParameter(QParameter *parameter)
Q_D(QEffect);
if (d->m_changeArbiter != Q_NULLPTR) {
- QScenePropertyChangePtr change(new QScenePropertyChange(NodeRemoved, this));
+ QScenePropertyChangePtr change(new QScenePropertyChange(NodeRemoved, QSceneChange::Node, id()));
change->setPropertyName("parameter");
change->setValue(QVariant::fromValue(parameter->id()));
d->notifyObservers(change);
@@ -131,7 +131,7 @@ void QEffect::addTechnique(QTechnique *t)
t->setParent(this);
if (d->m_changeArbiter != Q_NULLPTR) {
- QScenePropertyChangePtr e(new QScenePropertyChange(NodeAdded, this));
+ QScenePropertyChangePtr e(new QScenePropertyChange(NodeAdded, QSceneChange::Node, id()));
e->setPropertyName("technique");
e->setValue(QVariant::fromValue(t->id()));
d->notifyObservers(e);
@@ -148,7 +148,7 @@ void QEffect::removeTechnique(QTechnique *t)
{
Q_D(QEffect);
if (d->m_changeArbiter != Q_NULLPTR) {
- QScenePropertyChangePtr e(new QScenePropertyChange(NodeRemoved, this));
+ QScenePropertyChangePtr e(new QScenePropertyChange(NodeRemoved, QSceneChange::Node, id()));
e->setPropertyName("technique");
e->setValue(QVariant::fromValue(t->id()));
d->notifyObservers(e);
diff --git a/src/render/frontend/qmaterial.cpp b/src/render/frontend/qmaterial.cpp
index 79652d032..e9de8a21c 100644
--- a/src/render/frontend/qmaterial.cpp
+++ b/src/render/frontend/qmaterial.cpp
@@ -99,7 +99,7 @@ void QMaterial::setEffect(QEffect *effect)
if (effect != d->m_effect) {
if (d->m_effect && d->m_changeArbiter) {
- QScenePropertyChangePtr change(new QScenePropertyChange(NodeRemoved, this));
+ QScenePropertyChangePtr change(new QScenePropertyChange(NodeRemoved, QSceneChange::Node, id()));
change->setPropertyName("effect");
change->setValue(QVariant::fromValue(d->m_effect->id()));
d->notifyObservers(change);
@@ -116,7 +116,7 @@ void QMaterial::setEffect(QEffect *effect)
effect->setParent(this);
if (d->m_effect && d->m_changeArbiter) {
- QScenePropertyChangePtr change(new QScenePropertyChange(NodeAdded, this));
+ QScenePropertyChangePtr change(new QScenePropertyChange(NodeAdded, QSceneChange::Node, id()));
change->setPropertyName("effect");
change->setValue(QVariant::fromValue(effect->id()));
d->notifyObservers(change);
@@ -147,7 +147,7 @@ void QMaterial::addParameter(QParameter *parameter)
parameter->setParent(this);
if (d->m_changeArbiter != Q_NULLPTR) {
- QScenePropertyChangePtr change(new QScenePropertyChange(NodeAdded, this));
+ QScenePropertyChangePtr change(new QScenePropertyChange(NodeAdded, QSceneChange::Node, id()));
change->setPropertyName("parameter");
change->setValue(QVariant::fromValue(parameter->id()));
d->notifyObservers(change);
@@ -159,7 +159,7 @@ void QMaterial::removeParameter(QParameter *parameter)
{
Q_D(QMaterial);
if (d->m_changeArbiter != Q_NULLPTR) {
- QScenePropertyChangePtr change(new QScenePropertyChange(NodeRemoved, this));
+ QScenePropertyChangePtr change(new QScenePropertyChange(NodeRemoved, QSceneChange::Node, id()));
change->setPropertyName("parameter");
change->setValue(QVariant::fromValue(parameter->id()));
d->notifyObservers(change);
diff --git a/src/render/frontend/qparameter.cpp b/src/render/frontend/qparameter.cpp
index 5ecf24092..9a1ec67c5 100644
--- a/src/render/frontend/qparameter.cpp
+++ b/src/render/frontend/qparameter.cpp
@@ -117,7 +117,7 @@ void QParameter::setValue(const QVariant &dv)
if (txt != Q_NULLPTR && !txt->parent())
txt->setParent(this);
- QScenePropertyChangePtr change(new QScenePropertyChange(NodeUpdated, this));
+ QScenePropertyChangePtr change(new QScenePropertyChange(NodeUpdated, QSceneChange::Node, id()));
change->setPropertyName(d->m_name.toUtf8().data());
if (txt != Q_NULLPTR)
change->setValue(QVariant::fromValue(QNode::clone(txt)));
diff --git a/src/render/frontend/qrenderpass.cpp b/src/render/frontend/qrenderpass.cpp
index 89f831f0b..3fa5d0308 100644
--- a/src/render/frontend/qrenderpass.cpp
+++ b/src/render/frontend/qrenderpass.cpp
@@ -101,7 +101,7 @@ void QRenderPass::setShaderProgram(QShaderProgram *shaderProgram)
if (d->m_shader != shaderProgram) {
if (d->m_shader != Q_NULLPTR && d->m_changeArbiter != Q_NULLPTR) {
- QScenePropertyChangePtr e(new QScenePropertyChange(NodeRemoved, this));
+ QScenePropertyChangePtr e(new QScenePropertyChange(NodeRemoved, QSceneChange::Node, id()));
e->setPropertyName("shaderProgram");
e->setValue(QVariant::fromValue(d->m_shader->id()));
d->notifyObservers(e);
@@ -118,7 +118,7 @@ void QRenderPass::setShaderProgram(QShaderProgram *shaderProgram)
shaderProgram->setParent(this);
if (d->m_changeArbiter != Q_NULLPTR) {
- QScenePropertyChangePtr e(new QScenePropertyChange(NodeAdded, this));
+ QScenePropertyChangePtr e(new QScenePropertyChange(NodeAdded, QSceneChange::Node, id()));
e->setPropertyName("shaderProgram");
e->setValue(QVariant::fromValue(shaderProgram->id()));
d->notifyObservers(e);
@@ -146,7 +146,7 @@ void QRenderPass::addAnnotation(QAnnotation *annotation)
annotation->setParent(this);
if (d->m_changeArbiter != Q_NULLPTR) {
- QScenePropertyChangePtr change(new QScenePropertyChange(NodeAdded, this));
+ QScenePropertyChangePtr change(new QScenePropertyChange(NodeAdded, QSceneChange::Node, id()));
change->setPropertyName("annotation");
change->setValue(QVariant::fromValue(annotation->id()));
d->notifyObservers(change);
@@ -158,7 +158,7 @@ void QRenderPass::removeAnnotation(QAnnotation *annotation)
{
Q_D(QRenderPass);
if (d->m_changeArbiter != Q_NULLPTR) {
- QScenePropertyChangePtr change(new QScenePropertyChange(NodeRemoved, this));
+ QScenePropertyChangePtr change(new QScenePropertyChange(NodeRemoved, QSceneChange::Node, id()));
change->setPropertyName("annotation");
change->setValue(QVariant::fromValue(annotation->id()));
d->notifyObservers(change);
@@ -182,7 +182,7 @@ void QRenderPass::addBinding(QParameterMapping *binding)
binding->setParent(this);
if (d->m_changeArbiter != Q_NULLPTR) {
- QScenePropertyChangePtr change(new QScenePropertyChange(NodeAdded, this));
+ QScenePropertyChangePtr change(new QScenePropertyChange(NodeAdded, QSceneChange::Node, id()));
change->setPropertyName("binding");
change->setValue(QVariant::fromValue(QNode::clone(binding)));
d->notifyObservers(change);
@@ -194,7 +194,7 @@ void QRenderPass::removeBinding(QParameterMapping *binding)
{
Q_D(QRenderPass);
if (d->m_changeArbiter != Q_NULLPTR) {
- QScenePropertyChangePtr change(new QScenePropertyChange(NodeRemoved, this));
+ QScenePropertyChangePtr change(new QScenePropertyChange(NodeRemoved, QSceneChange::Node, id()));
change->setPropertyName("binding");
change->setValue(QVariant::fromValue(binding->id()));
d->notifyObservers(change);
@@ -219,7 +219,7 @@ void QRenderPass::addRenderState(QRenderState *state)
state->setParent(this);
if (d->m_changeArbiter != Q_NULLPTR) {
- QScenePropertyChangePtr change(new QScenePropertyChange(NodeAdded, this));
+ QScenePropertyChangePtr change(new QScenePropertyChange(NodeAdded, QSceneChange::Node, id()));
change->setPropertyName("renderState");
change->setValue(QVariant::fromValue(QNode::clone(state)));
d->notifyObservers(change);
@@ -231,7 +231,7 @@ void QRenderPass::removeRenderState(QRenderState *state)
{
Q_D(QRenderPass);
if (d->m_changeArbiter != Q_NULLPTR) {
- QScenePropertyChangePtr change(new QScenePropertyChange(NodeRemoved, this));
+ QScenePropertyChangePtr change(new QScenePropertyChange(NodeRemoved, QSceneChange::Node, id()));
change->setPropertyName("renderState");
change->setValue(QVariant::fromValue(state->id()));
d->notifyObservers(change);
diff --git a/src/render/frontend/qrendertarget.cpp b/src/render/frontend/qrendertarget.cpp
index 0f6174e40..3eb3b4e08 100644
--- a/src/render/frontend/qrendertarget.cpp
+++ b/src/render/frontend/qrendertarget.cpp
@@ -76,7 +76,7 @@ void QRenderTarget::addAttachment(QRenderAttachment *attachment)
attachment->setParent(this);
if (d->m_changeArbiter != Q_NULLPTR) {
- QScenePropertyChangePtr change(new QScenePropertyChange(NodeAdded, this));
+ QScenePropertyChangePtr change(new QScenePropertyChange(NodeAdded, QSceneChange::Node, id()));
change->setPropertyName("attachment");
change->setValue(QVariant::fromValue(attachment->id()));
d->notifyObservers(change);
@@ -89,7 +89,7 @@ void QRenderTarget::removeAttachment(QRenderAttachment *attachment)
Q_D(QRenderTarget);
if (d->m_changeArbiter != Q_NULLPTR) {
- QScenePropertyChangePtr change(new QScenePropertyChange(NodeRemoved, this));
+ QScenePropertyChangePtr change(new QScenePropertyChange(NodeRemoved, QSceneChange::Node, id()));
change->setPropertyName("attachment");
change->setValue(QVariant::fromValue(attachment->id()));
d->notifyObservers(change);
diff --git a/src/render/frontend/qtechnique.cpp b/src/render/frontend/qtechnique.cpp
index 74f85cda5..e78d88e01 100644
--- a/src/render/frontend/qtechnique.cpp
+++ b/src/render/frontend/qtechnique.cpp
@@ -86,7 +86,7 @@ void QTechnique::openGLFilterChanged()
{
Q_D(QTechnique);
if (d->m_changeArbiter != Q_NULLPTR) {
- QScenePropertyChangePtr change(new QScenePropertyChange(NodeUpdated, this));
+ QScenePropertyChangePtr change(new QScenePropertyChange(NodeUpdated, QSceneChange::Node, id()));
change->setPropertyName("openGLFilter");
QOpenGLFilter *clone = new QOpenGLFilter();
clone->copy(d->m_openGLFilter);
@@ -109,7 +109,7 @@ void QTechnique::addAnnotation(QAnnotation *criterion)
criterion->setParent(this);
if (d->m_changeArbiter != Q_NULLPTR) {
- QScenePropertyChangePtr change(new QScenePropertyChange(NodeAdded, this));
+ QScenePropertyChangePtr change(new QScenePropertyChange(NodeAdded, QSceneChange::Node, id()));
change->setPropertyName("annotation");
change->setValue(QVariant::fromValue(criterion->id()));
d->notifyObservers(change);
@@ -121,7 +121,7 @@ void QTechnique::removeAnnotation(QAnnotation *criterion)
{
Q_D(QTechnique);
if (d->m_changeArbiter != Q_NULLPTR) {
- QScenePropertyChangePtr change(new QScenePropertyChange(NodeRemoved, this));
+ QScenePropertyChangePtr change(new QScenePropertyChange(NodeRemoved, QSceneChange::Node, id()));
change->setPropertyName("annotation");
change->setValue(QVariant::fromValue(criterion->id()));
d->notifyObservers(change);
@@ -149,7 +149,7 @@ void QTechnique::addParameter(QParameter *parameter)
parameter->setParent(this);
if (d->m_changeArbiter != Q_NULLPTR) {
- QScenePropertyChangePtr change(new QScenePropertyChange(NodeAdded, this));
+ QScenePropertyChangePtr change(new QScenePropertyChange(NodeAdded, QSceneChange::Node, id()));
change->setPropertyName("parameter");
change->setValue(QVariant::fromValue(parameter->id()));
d->notifyObservers(change);
@@ -162,7 +162,7 @@ void QTechnique::removeParameter(QParameter *parameter)
Q_D(QTechnique);
if (d->m_changeArbiter != Q_NULLPTR) {
- QScenePropertyChangePtr change(new QScenePropertyChange(NodeRemoved, this));
+ QScenePropertyChangePtr change(new QScenePropertyChange(NodeRemoved, QSceneChange::Node, id()));
change->setPropertyName("parameter");
change->setValue(QVariant::fromValue(parameter->id()));
d->notifyObservers(change);
@@ -189,7 +189,7 @@ void QTechnique::addPass(QRenderPass *pass)
pass->setParent(this);
if (d->m_changeArbiter != Q_NULLPTR) {
- QScenePropertyChangePtr e(new QScenePropertyChange(NodeAdded, this));
+ QScenePropertyChangePtr e(new QScenePropertyChange(NodeAdded, QSceneChange::Node, id()));
e->setPropertyName("pass");
e->setValue(QVariant::fromValue(pass->id()));
d->notifyObservers(e);
@@ -206,7 +206,7 @@ void QTechnique::removePass(QRenderPass *pass)
{
Q_D(QTechnique);
if (d->m_changeArbiter) {
- QScenePropertyChangePtr e(new QScenePropertyChange(NodeRemoved, this));
+ QScenePropertyChangePtr e(new QScenePropertyChange(NodeRemoved, QSceneChange::Node, id()));
e->setPropertyName("pass");
e->setValue(QVariant::fromValue(pass->id()));
d->notifyObservers(e);