summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/core/nodes/qnode.cpp70
-rw-r--r--src/core/nodes/qnode_p.h2
-rw-r--r--tests/auto/core/nodes/tst_nodes.cpp132
-rw-r--r--tests/auto/core/qtransform/tst_qtransform.cpp3
-rw-r--r--tests/auto/input/qabstractaxisinput/tst_qabstractaxisinput.cpp3
-rw-r--r--tests/auto/input/qaction/tst_qaction.cpp3
-rw-r--r--tests/auto/input/qactioninput/tst_qactioninput.cpp3
-rw-r--r--tests/auto/input/qanalogaxisinput/tst_qanalogaxisinput.cpp3
-rw-r--r--tests/auto/input/qaxis/tst_qaxis.cpp3
-rw-r--r--tests/auto/input/qbuttonaxisinput/tst_qbuttonaxisinput.cpp3
-rw-r--r--tests/auto/input/qlogicaldevice/tst_qlogicaldevice.cpp3
-rw-r--r--tests/auto/render/commons/testpostmanarbiter.cpp11
-rw-r--r--tests/auto/render/commons/testpostmanarbiter.h8
-rw-r--r--tests/auto/render/qabstractlight/tst_qabstractlight.cpp66
-rw-r--r--tests/auto/render/qattribute/tst_qattribute.cpp3
-rw-r--r--tests/auto/render/qbuffer/tst_qbuffer.cpp3
-rw-r--r--tests/auto/render/qcameraselector/tst_qcameraselector.cpp3
-rw-r--r--tests/auto/render/qclearbuffers/tst_qclearbuffers.cpp3
-rw-r--r--tests/auto/render/qframegraphnode/tst_qframegraphnode.cpp3
-rw-r--r--tests/auto/render/qgeometry/tst_qgeometry.cpp3
-rw-r--r--tests/auto/render/qgeometryrenderer/tst_qgeometryrenderer.cpp3
-rw-r--r--tests/auto/render/qlayerfilter/tst_qlayerfilter.cpp3
-rw-r--r--tests/auto/render/qmaterial/tst_qmaterial.cpp12
-rw-r--r--tests/auto/render/qobjectpicker/tst_qobjectpicker.cpp3
-rw-r--r--tests/auto/render/qrenderpassfilter/tst_qrenderpassfilter.cpp3
-rw-r--r--tests/auto/render/qrenderstateset/tst_qrenderstateset.cpp3
-rw-r--r--tests/auto/render/qrendertargetselector/tst_qrendertargetselector.cpp3
-rw-r--r--tests/auto/render/qsortpolicy/tst_qsortpolicy.cpp3
-rw-r--r--tests/auto/render/qtechniquefilter/tst_qtechniquefilter.cpp3
-rw-r--r--tests/auto/render/qviewport/tst_qviewport.cpp3
-rw-r--r--tests/auto/render/renderviewutils/tst_renderviewutils.cpp3
31 files changed, 232 insertions, 141 deletions
diff --git a/src/core/nodes/qnode.cpp b/src/core/nodes/qnode.cpp
index e56d4bd81..6f19e7217 100644
--- a/src/core/nodes/qnode.cpp
+++ b/src/core/nodes/qnode.cpp
@@ -91,6 +91,7 @@ void QNodePrivate::init(QNode *parent)
// in a deferred way when the object is fully constructed. This is delayed
// until the object is fully constructed as it involves calling a virtual
// function of QNode.
+ m_parentId = parent->id();
const auto parentPrivate = get(parent);
m_scene = parentPrivate->m_scene;
Q_Q(QNode);
@@ -119,6 +120,43 @@ void QNodePrivate::notifyCreationChange()
/*!
* \internal
*
+ * Notify the backend that the parent lost this node as a child and
+ * that this node is being destroyed. We only send the node removed
+ * change for the parent's children property iff we have an id for
+ * a parent node. This is set/unset in the _q_addChild()/_q_removeChild()
+ * functions (and initialized in init() if there is a parent at
+ * construction time).
+ *
+ * Likewise, we only send the node destroyed change, iff we have
+ * previously sent a node created change. This is tracked via the
+ * m_hasBackendNode member.
+ */
+void QNodePrivate::notifyDestructionChangesAndRemoveFromScene()
+{
+ Q_Q(QNode);
+
+// // We notify the backend that the parent lost us as a child
+ if (m_changeArbiter != nullptr && !m_parentId.isNull()) {
+ const auto change = QPropertyNodeRemovedChangePtr::create(m_parentId, q);
+ change->setPropertyName("children");
+ notifyObservers(change);
+ }
+
+ // Tell the backend we are about to be destroyed
+ if (m_hasBackendNode) {
+ const QDestructionIdAndTypeCollector collector(q);
+ const auto destroyedChange = QNodeDestroyedChangePtr::create(q, collector.subtreeIdsAndTypes());
+ notifyObservers(destroyedChange);
+ }
+
+ // We unset the scene from the node as its backend node was/is about to be destroyed
+ QNodeVisitor visitor;
+ visitor.traverse(q, this, &QNodePrivate::unsetSceneHelper);
+}
+
+/*!
+ * \internal
+ *
* Sends a QNodeCreatedChange event to the aspects and then also notifies the
* parent backend node of its new child. This is called in a deferred manner
* by the QNodePrivate::init() method to notify the backend of newly created
@@ -152,6 +190,14 @@ void QNodePrivate::_q_addChild(QNode *childNode)
Q_ASSERT(childNode);
Q_ASSERT_X(childNode->parent() == q_func(), Q_FUNC_INFO, "not a child of this node");
+ // Store our id as the parentId in the child so that even if the child gets
+ // removed from the scene as part of the destruction of the parent, when the
+ // parent's children are deleted in the QObject dtor, we still have access to
+ // the parentId. If we didn't store this, we wouldn't have access at that time
+ // because the parent woudl then only be a QObject, the QNode part would have
+ // been destroyed already.
+ QNodePrivate::get(childNode)->m_parentId = m_id;
+
if (!m_scene)
return;
@@ -180,6 +226,8 @@ void QNodePrivate::_q_removeChild(QNode *childNode)
Q_ASSERT(childNode);
Q_ASSERT_X(childNode->parent() == q_func(), Q_FUNC_INFO, "not a child of this node");
+ QNodePrivate::get(childNode)->m_parentId = QNodeId();
+
// We notify the backend that we lost a child
if (m_changeArbiter != nullptr) {
const auto change = QPropertyNodeRemovedChangePtr::create(m_id, childNode);
@@ -220,18 +268,8 @@ void QNodePrivate::_q_setParentHelper(QNode *parent)
// If we have an old parent but the new parent is null
// the backend node needs to be destroyed
- if (!parent) {
- // Tell the backend we are about to be destroyed
- if (m_hasBackendNode) {
- const QDestructionIdAndTypeCollector collector(q);
- const auto destroyedChange = QNodeDestroyedChangePtr::create(q, collector.subtreeIdsAndTypes());
- notifyObservers(destroyedChange);
- }
-
- // We unset the scene from the node as its backend node was/is about to be destroyed
- QNodeVisitor visitor;
- visitor.traverse(q, oldParentNode->d_func(), &QNodePrivate::unsetSceneHelper);
- }
+ if (!parent)
+ notifyDestructionChangesAndRemoveFromScene();
}
// Basically QObject::setParent but for QObjectPrivate
@@ -586,10 +624,10 @@ QNode::QNode(QNodePrivate &dd, QNode *parent)
QNode::~QNode()
{
- // If we have a parent it makes sense to let it know we are about to be destroyed.
- // This in turn triggers the deletion of the corresponding backend nodes for the
- // subtree rooted at this QNode.
- setParent(Q_NODE_NULLPTR);
+ // Notify the backend that the parent lost this node as a child and
+ // that this node is being destroyed.
+ Q_D(QNode);
+ d->notifyDestructionChangesAndRemoveFromScene();
}
/*!
diff --git a/src/core/nodes/qnode_p.h b/src/core/nodes/qnode_p.h
index 648bc4c34..e290ffe32 100644
--- a/src/core/nodes/qnode_p.h
+++ b/src/core/nodes/qnode_p.h
@@ -92,6 +92,7 @@ public:
QMetaObject *m_typeInfo;
QScene *m_scene;
mutable QNodeId m_id;
+ QNodeId m_parentId; // Store this so we have it even in parent's QObject dtor
bool m_blockNotifications;
bool m_hasBackendNode;
bool m_enabled;
@@ -101,6 +102,7 @@ public:
private:
void notifyCreationChange();
+ void notifyDestructionChangesAndRemoveFromScene();
void _q_notifyCreationAndChildChanges();
void _q_addChild(QNode *childNode);
void _q_removeChild(QNode *childNode);
diff --git a/tests/auto/core/nodes/tst_nodes.cpp b/tests/auto/core/nodes/tst_nodes.cpp
index a75236386..695a93640 100644
--- a/tests/auto/core/nodes/tst_nodes.cpp
+++ b/tests/auto/core/nodes/tst_nodes.cpp
@@ -113,17 +113,14 @@ public:
bool wasLocked() const { return second; }
};
- ObserverSpy(Qt3DCore::QNode *node)
+ ObserverSpy()
: Qt3DCore::QAbstractArbiter()
- , m_node(node)
, m_postman(new SimplePostman(this))
{
- Qt3DCore::QNodePrivate::get(node)->setArbiter(this);
}
~ObserverSpy()
{
- Qt3DCore::QNodePrivate::get(m_node)->setArbiter(nullptr);
}
void sceneChangeEventWithLock(const Qt3DCore::QSceneChangePtr &e) Q_DECL_OVERRIDE
@@ -149,7 +146,6 @@ public:
}
QList<ChangeRecord> events;
- Qt3DCore::QNode *m_node;
QScopedPointer<SimplePostman> m_postman;
};
@@ -165,12 +161,10 @@ class MyQNode : public Qt3DCore::QNode
public:
explicit MyQNode(Qt3DCore::QNode *parent = 0)
: QNode(parent)
- , m_scene(nullptr)
{}
~MyQNode()
{
- delete m_scene;
}
void setCustomProperty(const QString &s)
@@ -187,14 +181,14 @@ public:
return m_customProperty;
}
- void assignScene(Qt3DCore::QAbstractArbiter *arbiter)
+ void setArbiterAndScene(Qt3DCore::QAbstractArbiter *arbiter,
+ Qt3DCore::QScene *scene = nullptr)
{
- if (!m_scene) {
- m_scene = new Qt3DCore::QScene();
- if (arbiter)
- m_scene->setArbiter(arbiter);
- }
- Qt3DCore::QNodePrivate::get(this)->setScene(m_scene);
+ Q_ASSERT(arbiter);
+ if (scene)
+ scene->setArbiter(arbiter);
+ Qt3DCore::QNodePrivate::get(this)->setScene(scene);
+ Qt3DCore::QNodePrivate::get(this)->setArbiter(arbiter);
}
signals:
@@ -202,7 +196,29 @@ signals:
protected:
QString m_customProperty;
- Qt3DCore::QScene *m_scene;
+};
+
+class MyQEntity : public Qt3DCore::QEntity
+{
+ Q_OBJECT
+public:
+ explicit MyQEntity(Qt3DCore::QNode *parent = 0)
+ : QEntity(parent)
+ {}
+
+ ~MyQEntity()
+ {
+ }
+
+ void setArbiterAndScene(Qt3DCore::QAbstractArbiter *arbiter,
+ Qt3DCore::QScene *scene = nullptr)
+ {
+ Q_ASSERT(arbiter);
+ if (scene)
+ scene->setArbiter(arbiter);
+ Qt3DCore::QNodePrivate::get(this)->setScene(scene);
+ Qt3DCore::QNodePrivate::get(this)->setArbiter(arbiter);
+ }
};
class MyQComponent : public Qt3DCore::QComponent
@@ -262,8 +278,9 @@ void tst_Nodes::appendSingleChildNodeToNodeNoSceneExplicitParenting()
{
// Check nodes added when no scene is set
// GIVEN
+ ObserverSpy spy;
QScopedPointer<MyQNode> node(new MyQNode());
- ObserverSpy spy(node.data());
+ node->setArbiterAndScene(&spy);
// THEN
QVERIFY(Qt3DCore::QNodePrivate::get(node.data())->scene() == nullptr);
@@ -289,8 +306,9 @@ void tst_Nodes::appendSingleChildNodeToNodeNoSceneImplicitParenting()
{
// Check nodes added when no scene is set
// GIVEN
+ ObserverSpy spy;
QScopedPointer<MyQNode> node(new MyQNode());
- ObserverSpy spy(node.data());
+ node->setArbiterAndScene(&spy);
// THEN
QVERIFY(Qt3DCore::QNodePrivate::get(node.data())->scene() == nullptr);
@@ -311,8 +329,9 @@ void tst_Nodes::appendMultipleChildNodesToNodeNoScene()
{
// Check multiple nodes added with no scene set
// GIVEN
+ ObserverSpy spy;
QScopedPointer<MyQNode> node(new MyQNode());
- ObserverSpy spy(node.data());
+ node->setArbiterAndScene(&spy);
// THEN
QVERIFY(Qt3DCore::QNodePrivate::get(node.data())->scene() == nullptr);
@@ -342,10 +361,11 @@ void tst_Nodes::appendSingleChildNodeToNodeSceneExplicitParenting()
{
// Check nodes added when scene is set
// GIVEN
+ Qt3DCore::QScene scene;
+ ObserverSpy spy;
QScopedPointer<MyQNode> node(new MyQNode());
- ObserverSpy spy(node.data());
// WHEN
- node->assignScene(&spy);
+ node->setArbiterAndScene(&spy, &scene);
// THEN
QVERIFY(Qt3DCore::QNodePrivate::get(node.data())->scene() != nullptr);
@@ -388,11 +408,12 @@ void tst_Nodes::appendSingleChildNodeToNodeSceneImplicitParenting()
{
// Check nodes added when scene is set
// GIVEN
+ Qt3DCore::QScene scene;
+ ObserverSpy spy;
QScopedPointer<MyQNode> node(new MyQNode());
- ObserverSpy spy(node.data());
// WHEN
- node->assignScene(&spy);
+ node->setArbiterAndScene(&spy, &scene);
// THEN
QVERIFY(Qt3DCore::QNodePrivate::get(node.data())->scene() != nullptr);
@@ -432,11 +453,12 @@ void tst_Nodes::appendMultipleChildNodesToNodeScene()
// Check nodes added when scene is set
// GIVEN
+ Qt3DCore::QScene scene;
+ ObserverSpy spy;
QScopedPointer<MyQNode> node(new MyQNode());
// WHEN
- ObserverSpy spy(node.data());
- node->assignScene(&spy);
+ node->setArbiterAndScene(&spy, &scene);
// THEN
QVERIFY(Qt3DCore::QNodePrivate::get(node.data())->scene() != nullptr);
@@ -516,11 +538,12 @@ void tst_Nodes::appendMultipleChildNodesToNodeScene()
void tst_Nodes::checkParentChangeToNull()
{
// GIVEN
+ Qt3DCore::QScene scene;
+ ObserverSpy spy;
QScopedPointer<MyQNode> root(new MyQNode());
- ObserverSpy spy(root.data());
// WHEN
- root->assignScene(&spy);
+ root->setArbiterAndScene(&spy, &scene);
QScopedPointer<Qt3DCore::QNode> child(new MyQNode(root.data()));
QCoreApplication::processEvents();
@@ -558,22 +581,19 @@ void tst_Nodes::checkParentChangeToNull()
void tst_Nodes::checkParentChangeToOtherParent()
{
// GIVEN
+ Qt3DCore::QScene scene;
+ ObserverSpy spy;
QScopedPointer<MyQNode> root(new MyQNode());
- ObserverSpy spy(root.data());
- root->assignScene(&spy);
+ root->setArbiterAndScene(&spy, &scene);
QScopedPointer<MyQNode> parent1(new MyQNode(root.data()));
QScopedPointer<MyQNode> parent2(new MyQNode(root.data()));
QCoreApplication::processEvents();
// THEN
- QCOMPARE(spy.events.size(), 4);
+ QCOMPARE(spy.events.size(), 4); // 2 x (1 node created change, 1 node added to children change)
// WHEN
- ObserverSpy spyParent1(parent1.data());
- ObserverSpy spyParent2(parent2.data());
- parent1->assignScene(&spyParent1);
- parent2->assignScene(&spyParent2);
-
+ spy.events.clear();
QScopedPointer<Qt3DCore::QNode> child(new MyQNode(parent1.data()));
QCoreApplication::processEvents();
@@ -582,30 +602,29 @@ void tst_Nodes::checkParentChangeToOtherParent()
QCOMPARE(parent1->children().size(), 1);
QCOMPARE(parent2->children().size(), 0);
QVERIFY(Qt3DCore::QNodePrivate::get(child.data())->scene() != nullptr);
- QCOMPARE(spyParent1.events.size(), 2);
+ QCOMPARE(spy.events.size(), 2); // 1 node created change, 1 node added to children change
// WHEN
- spyParent1.events.clear();
+ spy.events.clear();
child->setParent(parent2.data());
// THEN
QVERIFY(child->parent() == parent2.data());
QCOMPARE(parent1->children().size(), 0);
QCOMPARE(parent2->children().size(), 1);
- QCOMPARE(spyParent1.events.size(), 1);
- QCOMPARE(spyParent2.events.size(), 1);
+ QCOMPARE(spy.events.size(), 2);
// CHECK event 1 is a Node Removed event
- QVERIFY(spyParent1.events.first().wasLocked());
- const Qt3DCore::QPropertyNodeRemovedChangePtr event = spyParent1.events.takeFirst().change().dynamicCast<Qt3DCore::QPropertyNodeRemovedChange>();
+ QVERIFY(spy.events.first().wasLocked());
+ const Qt3DCore::QPropertyNodeRemovedChangePtr event = spy.events.takeFirst().change().dynamicCast<Qt3DCore::QPropertyNodeRemovedChange>();
QCOMPARE(event->type(), Qt3DCore::PropertyValueRemoved);
QCOMPARE(event->subjectId(), parent1->id());
QCOMPARE(event->removedNodeId(), child->id());
QCOMPARE(event->metaObject(), child->metaObject());
// CHECK event 2 is a Node Added event
- QVERIFY(spyParent2.events.last().wasLocked());
- const Qt3DCore::QPropertyNodeAddedChangePtr event2 = spyParent2.events.last().change().dynamicCast<Qt3DCore::QPropertyNodeAddedChange>();
+ QVERIFY(spy.events.last().wasLocked());
+ const Qt3DCore::QPropertyNodeAddedChangePtr event2 = spy.events.last().change().dynamicCast<Qt3DCore::QPropertyNodeAddedChange>();
QCOMPARE(event2->type(), Qt3DCore::PropertyValueAdded);
QCOMPARE(event2->subjectId(), parent2->id());
QCOMPARE(event2->addedNodeId(), child->id());
@@ -615,12 +634,13 @@ void tst_Nodes::checkParentChangeToOtherParent()
void tst_Nodes::removingSingleChildNodeFromNode()
{
// GIVEN
+ Qt3DCore::QScene scene;
+ ObserverSpy spy;
QScopedPointer<MyQNode> root(new MyQNode());
QScopedPointer<Qt3DCore::QNode> child(new MyQNode());
- ObserverSpy spy(root.data());
// WHEN
- root->assignScene(&spy);
+ root->setArbiterAndScene(&spy, &scene);
child->setParent(root.data());
// Clear any creation event
@@ -657,11 +677,12 @@ void tst_Nodes::removingSingleChildNodeFromNode()
void tst_Nodes::removingMultipleChildNodesFromNode()
{
// GIVEN
+ Qt3DCore::QScene scene;
+ ObserverSpy spy;
QScopedPointer<MyQNode> root(new MyQNode());
// WHEN
- ObserverSpy spy(root.data());
- root->assignScene(&spy);
+ root->setArbiterAndScene(&spy, &scene);
// THEN
QVERIFY(Qt3DCore::QNodePrivate::get(root.data())->scene() != nullptr);
@@ -749,7 +770,9 @@ void tst_Nodes::removingChildEntitiesFromNode()
void tst_Nodes::appendingParentlessComponentToEntity()
{
// GIVEN
- QScopedPointer<Qt3DCore::QEntity> entity(new Qt3DCore::QEntity());
+ ObserverSpy spy;
+ QScopedPointer<MyQEntity> entity(new MyQEntity());
+ entity->setArbiterAndScene(&spy);
MyQComponent *comp = new MyQComponent();
// THEN
@@ -759,7 +782,6 @@ void tst_Nodes::appendingParentlessComponentToEntity()
QVERIFY(comp->parentNode() == nullptr);
// WHEN
- ObserverSpy spy(entity.data());
entity->addComponent(comp);
// THEN
@@ -787,7 +809,9 @@ void tst_Nodes::appendingParentlessComponentToEntity()
void tst_Nodes::appendingComponentToEntity()
{
// GIVEN
- QScopedPointer<Qt3DCore::QEntity> entity(new Qt3DCore::QEntity());
+ ObserverSpy spy;
+ QScopedPointer<MyQEntity> entity(new MyQEntity());
+ entity->setArbiterAndScene(&spy);
MyQComponent *comp = new MyQComponent(entity.data());
QCoreApplication::processEvents();
@@ -798,7 +822,6 @@ void tst_Nodes::appendingComponentToEntity()
QVERIFY(comp->parentNode() == entity.data());
// WHEN
- ObserverSpy spy(entity.data());
entity->addComponent(comp);
// THEN
@@ -818,7 +841,9 @@ void tst_Nodes::appendingComponentToEntity()
void tst_Nodes::removingComponentFromEntity()
{
// GIVEN
- QScopedPointer<Qt3DCore::QEntity> entity(new Qt3DCore::QEntity());
+ ObserverSpy spy;
+ QScopedPointer<MyQEntity> entity(new MyQEntity());
+ entity->setArbiterAndScene(&spy);
MyQComponent *comp = new MyQComponent();
// WHEN
@@ -829,8 +854,8 @@ void tst_Nodes::removingComponentFromEntity()
QCOMPARE(entity->children().count(), 1);
QVERIFY(comp->parent() == entity.data());
- ObserverSpy spy(entity.data());
// WHEN
+ spy.events.clear();
entity->removeComponent(comp);
// THEN
@@ -850,8 +875,9 @@ void tst_Nodes::removingComponentFromEntity()
void tst_Nodes::changeCustomProperty()
{
// GIVEN
+ ObserverSpy spy;
QScopedPointer<MyQNode> node(new MyQNode());
- ObserverSpy spy(node.data());
+ node->setArbiterAndScene(&spy);
// WHEN
node->setCustomProperty(QStringLiteral("foo"));
// THEN
diff --git a/tests/auto/core/qtransform/tst_qtransform.cpp b/tests/auto/core/qtransform/tst_qtransform.cpp
index 2b92ffacd..b94bde2d1 100644
--- a/tests/auto/core/qtransform/tst_qtransform.cpp
+++ b/tests/auto/core/qtransform/tst_qtransform.cpp
@@ -100,8 +100,9 @@ private Q_SLOTS:
void checkPropertyUpdates()
{
// GIVEN
+ TestArbiter arbiter;
QScopedPointer<Qt3DCore::QTransform> transform(new Qt3DCore::QTransform());
- TestArbiter arbiter(transform.data());
+ arbiter.setArbiterOnNode(transform.data());
// WHEN
transform->setTranslation(QVector3D(454.0f, 427.0f, 383.0f));
diff --git a/tests/auto/input/qabstractaxisinput/tst_qabstractaxisinput.cpp b/tests/auto/input/qabstractaxisinput/tst_qabstractaxisinput.cpp
index f0d8aeddd..890d9b0d3 100644
--- a/tests/auto/input/qabstractaxisinput/tst_qabstractaxisinput.cpp
+++ b/tests/auto/input/qabstractaxisinput/tst_qabstractaxisinput.cpp
@@ -62,8 +62,9 @@ private Q_SLOTS:
void checkPropertyUpdates()
{
// GIVEN
+ TestArbiter arbiter;
QScopedPointer<Qt3DInput::QAbstractAxisInput> axisInput(new DummyAxisInput());
- TestArbiter arbiter(axisInput.data());
+ arbiter.setArbiterOnNode(axisInput.data());
// WHEN
TestDevice *device = new TestDevice(axisInput.data());
diff --git a/tests/auto/input/qaction/tst_qaction.cpp b/tests/auto/input/qaction/tst_qaction.cpp
index cbfc7d756..7d97eddd9 100644
--- a/tests/auto/input/qaction/tst_qaction.cpp
+++ b/tests/auto/input/qaction/tst_qaction.cpp
@@ -106,8 +106,9 @@ private Q_SLOTS:
void checkPropertyUpdates()
{
// GIVEN
+ TestArbiter arbiter;
QScopedPointer<Qt3DInput::QAction> action(new Qt3DInput::QAction());
- TestArbiter arbiter(action.data());
+ arbiter.setArbiterOnNode(action.data());
// WHEN
Qt3DInput::QActionInput *input = new Qt3DInput::QActionInput();
diff --git a/tests/auto/input/qactioninput/tst_qactioninput.cpp b/tests/auto/input/qactioninput/tst_qactioninput.cpp
index b6920af4d..b8eeca0d8 100644
--- a/tests/auto/input/qactioninput/tst_qactioninput.cpp
+++ b/tests/auto/input/qactioninput/tst_qactioninput.cpp
@@ -94,8 +94,9 @@ private Q_SLOTS:
void checkPropertyUpdates()
{
// GIVEN
+ TestArbiter arbiter;
QScopedPointer<Qt3DInput::QActionInput> actionInput(new Qt3DInput::QActionInput());
- TestArbiter arbiter(actionInput.data());
+ arbiter.setArbiterOnNode(actionInput.data());
// WHEN
QVector<int> buttons = QVector<int>() << 555;
diff --git a/tests/auto/input/qanalogaxisinput/tst_qanalogaxisinput.cpp b/tests/auto/input/qanalogaxisinput/tst_qanalogaxisinput.cpp
index 0c98b5d55..da22ca165 100644
--- a/tests/auto/input/qanalogaxisinput/tst_qanalogaxisinput.cpp
+++ b/tests/auto/input/qanalogaxisinput/tst_qanalogaxisinput.cpp
@@ -91,8 +91,9 @@ private Q_SLOTS:
void checkPropertyUpdates()
{
// GIVEN
+ TestArbiter arbiter;
QScopedPointer<Qt3DInput::QAnalogAxisInput> axisInput(new Qt3DInput::QAnalogAxisInput());
- TestArbiter arbiter(axisInput.data());
+ arbiter.setArbiterOnNode(axisInput.data());
// WHEN
axisInput->setAxis(350);
diff --git a/tests/auto/input/qaxis/tst_qaxis.cpp b/tests/auto/input/qaxis/tst_qaxis.cpp
index 70c9a9a48..cd2d002b7 100644
--- a/tests/auto/input/qaxis/tst_qaxis.cpp
+++ b/tests/auto/input/qaxis/tst_qaxis.cpp
@@ -103,8 +103,9 @@ private Q_SLOTS:
void checkPropertyUpdates()
{
// GIVEN
+ TestArbiter arbiter;
QScopedPointer<Qt3DInput::QAxis> axis(new Qt3DInput::QAxis());
- TestArbiter arbiter(axis.data());
+ arbiter.setArbiterOnNode(axis.data());
// WHEN
Qt3DInput::QAbstractAxisInput *input = new Qt3DInput::QAnalogAxisInput();
diff --git a/tests/auto/input/qbuttonaxisinput/tst_qbuttonaxisinput.cpp b/tests/auto/input/qbuttonaxisinput/tst_qbuttonaxisinput.cpp
index 2eb66196b..1a0459958 100644
--- a/tests/auto/input/qbuttonaxisinput/tst_qbuttonaxisinput.cpp
+++ b/tests/auto/input/qbuttonaxisinput/tst_qbuttonaxisinput.cpp
@@ -102,8 +102,9 @@ private Q_SLOTS:
void checkPropertyUpdates()
{
// GIVEN
+ TestArbiter arbiter;
QScopedPointer<Qt3DInput::QButtonAxisInput> axisInput(new Qt3DInput::QButtonAxisInput());
- TestArbiter arbiter(axisInput.data());
+ arbiter.setArbiterOnNode(axisInput.data());
// WHEN
QVector<int> buttons = QVector<int>() << 555;
diff --git a/tests/auto/input/qlogicaldevice/tst_qlogicaldevice.cpp b/tests/auto/input/qlogicaldevice/tst_qlogicaldevice.cpp
index 083fa70ce..fcbd8894c 100644
--- a/tests/auto/input/qlogicaldevice/tst_qlogicaldevice.cpp
+++ b/tests/auto/input/qlogicaldevice/tst_qlogicaldevice.cpp
@@ -109,8 +109,9 @@ private Q_SLOTS:
void checkPropertyUpdates()
{
// GIVEN
+ TestArbiter arbiter;
QScopedPointer<Qt3DInput::QLogicalDevice> logicalDevice(new Qt3DInput::QLogicalDevice());
- TestArbiter arbiter(logicalDevice.data());
+ arbiter.setArbiterOnNode(logicalDevice.data());
// WHEN
Qt3DInput::QAction *action = new Qt3DInput::QAction(logicalDevice.data());
diff --git a/tests/auto/render/commons/testpostmanarbiter.cpp b/tests/auto/render/commons/testpostmanarbiter.cpp
index 6371471c9..6c3ca025b 100644
--- a/tests/auto/render/commons/testpostmanarbiter.cpp
+++ b/tests/auto/render/commons/testpostmanarbiter.cpp
@@ -46,18 +46,13 @@ void TestPostman::notifyBackend(const Qt3DCore::QSceneChangePtr &e)
m_arbiter->sceneChangeEventWithLock(e);
}
-TestArbiter::TestArbiter(Qt3DCore::QNode *node)
+TestArbiter::TestArbiter()
: m_postman(new TestPostman(this))
- , m_node(node)
{
- if (m_node)
- assignArbiter(m_node);
}
TestArbiter::~TestArbiter()
{
- if (m_node)
- Qt3DCore::QNodePrivate::get(m_node)->setArbiter(nullptr);
}
void TestArbiter::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e)
@@ -80,11 +75,11 @@ Qt3DCore::QAbstractPostman *TestArbiter::postman() const
return m_postman;
}
-void TestArbiter::assignArbiter(Qt3DCore::QNode *node)
+void TestArbiter::setArbiterOnNode(Qt3DCore::QNode *node)
{
Qt3DCore::QNodePrivate::get(node)->setArbiter(this);
Q_FOREACH (Qt3DCore::QNode *n, node->childNodes())
- assignArbiter(n);
+ setArbiterOnNode(n);
}
QT_END_NAMESPACE
diff --git a/tests/auto/render/commons/testpostmanarbiter.h b/tests/auto/render/commons/testpostmanarbiter.h
index 2861801e5..cb2b87afd 100644
--- a/tests/auto/render/commons/testpostmanarbiter.h
+++ b/tests/auto/render/commons/testpostmanarbiter.h
@@ -53,8 +53,7 @@ private:
class TestArbiter : public Qt3DCore::QAbstractArbiter
{
public:
- TestArbiter(Qt3DCore::QNode *node = nullptr);
-
+ TestArbiter();
~TestArbiter();
void sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e) Q_DECL_FINAL;
@@ -67,11 +66,10 @@ public:
QVector<Qt3DCore::QSceneChangePtr> events;
+ void setArbiterOnNode(Qt3DCore::QNode *node);
+
private:
TestPostman *m_postman;
- Qt3DCore::QNode *m_node;
-
- void assignArbiter(Qt3DCore::QNode *node);
};
QT_END_NAMESPACE
diff --git a/tests/auto/render/qabstractlight/tst_qabstractlight.cpp b/tests/auto/render/qabstractlight/tst_qabstractlight.cpp
index c85fcde6b..9fc6bfa76 100644
--- a/tests/auto/render/qabstractlight/tst_qabstractlight.cpp
+++ b/tests/auto/render/qabstractlight/tst_qabstractlight.cpp
@@ -143,41 +143,43 @@ private Q_SLOTS:
void checkLightPropertyUpdates()
{
+ TestArbiter arbiter;
QScopedPointer<Qt3DRender::QAbstractLight> light(new DummyLight);
- TestArbiter lightArbiter(light.data());
+ arbiter.setArbiterOnNode(light.data());
light->setColor(Qt::red);
light->setIntensity(0.5f);
QCoreApplication::processEvents();
- QCOMPARE(lightArbiter.events.size(), 2 * 2); // Due to contained shader data
+ QCOMPARE(arbiter.events.size(), 2 * 2); // Due to contained shader data
for (int i = 0; i < 2; i++)
- lightArbiter.events.removeAt(i);
- Qt3DCore::QPropertyUpdatedChangePtr change = lightArbiter.events[0].staticCast<Qt3DCore::QPropertyUpdatedChange>();
+ arbiter.events.removeAt(i);
+ Qt3DCore::QPropertyUpdatedChangePtr change = arbiter.events[0].staticCast<Qt3DCore::QPropertyUpdatedChange>();
QCOMPARE(change->propertyName(), "color");
QCOMPARE(change->subjectId(), light->id());
QCOMPARE(change->value().value<QColor>(), QColor(Qt::red));
QCOMPARE(change->type(), Qt3DCore::PropertyUpdated);
- change = lightArbiter.events[1].staticCast<Qt3DCore::QPropertyUpdatedChange>();
+ change = arbiter.events[1].staticCast<Qt3DCore::QPropertyUpdatedChange>();
QCOMPARE(change->propertyName(), "intensity");
QCOMPARE(change->subjectId(), light->id());
QCOMPARE(change->value().value<float>(), 0.5f);
QCOMPARE(change->type(), Qt3DCore::PropertyUpdated);
- lightArbiter.events.clear();
+ arbiter.events.clear();
light->setColor(Qt::red);
QCoreApplication::processEvents();
- QCOMPARE(lightArbiter.events.size(), 0);
+ QCOMPARE(arbiter.events.size(), 0);
- lightArbiter.events.clear();
+ arbiter.events.clear();
}
void checkPointLightPropertyUpdates()
{
+ TestArbiter arbiter;
QScopedPointer<Qt3DRender::QPointLight> pointLight(new Qt3DRender::QPointLight);
- TestArbiter pointLightArbiter(pointLight.data());
+ arbiter.setArbiterOnNode(pointLight.data());
pointLight->setColor(Qt::green);
pointLight->setIntensity(0.5f);
@@ -186,69 +188,71 @@ private Q_SLOTS:
pointLight->setQuadraticAttenuation(1.0f);
QCoreApplication::processEvents();
- QCOMPARE(pointLightArbiter.events.size(), 4 * 2); // Due to contained shader data
+ QCOMPARE(arbiter.events.size(), 4 * 2); // Due to contained shader data
for (int i = 0; i < 4; i++)
- pointLightArbiter.events.removeAt(i);
- Qt3DCore::QPropertyUpdatedChangePtr change = pointLightArbiter.events[0].staticCast<Qt3DCore::QPropertyUpdatedChange>();
+ arbiter.events.removeAt(i);
+ Qt3DCore::QPropertyUpdatedChangePtr change = arbiter.events[0].staticCast<Qt3DCore::QPropertyUpdatedChange>();
QCOMPARE(change->propertyName(), "color");
QCOMPARE(change->subjectId(), pointLight->id());
QCOMPARE(change->value().value<QColor>(), QColor(Qt::green));
QCOMPARE(change->type(), Qt3DCore::PropertyUpdated);
- change = pointLightArbiter.events[1].staticCast<Qt3DCore::QPropertyUpdatedChange>();
+ change = arbiter.events[1].staticCast<Qt3DCore::QPropertyUpdatedChange>();
QCOMPARE(change->propertyName(), "intensity");
QCOMPARE(change->subjectId(), pointLight->id());
QCOMPARE(change->value().value<float>(), 0.5f);
QCOMPARE(change->type(), Qt3DCore::PropertyUpdated);
- change = pointLightArbiter.events[2].staticCast<Qt3DCore::QPropertyUpdatedChange>();
+ change = arbiter.events[2].staticCast<Qt3DCore::QPropertyUpdatedChange>();
QCOMPARE(change->propertyName(), "constantAttenuation");
QCOMPARE(change->subjectId(), pointLight->id());
QCOMPARE(change->value().value<float>(), 0.5f);
QCOMPARE(change->type(), Qt3DCore::PropertyUpdated);
- change = pointLightArbiter.events[3].staticCast<Qt3DCore::QPropertyUpdatedChange>();
+ change = arbiter.events[3].staticCast<Qt3DCore::QPropertyUpdatedChange>();
QCOMPARE(change->propertyName(), "quadraticAttenuation");
QCOMPARE(change->subjectId(), pointLight->id());
QCOMPARE(change->value().value<float>(), 1.0f);
QCOMPARE(change->type(), Qt3DCore::PropertyUpdated);
- pointLightArbiter.events.clear();
+ arbiter.events.clear();
}
void checkDirectionalLightPropertyUpdates()
{
+ TestArbiter arbiter;
QScopedPointer<Qt3DRender::QDirectionalLight> dirLight(new Qt3DRender::QDirectionalLight);
- TestArbiter dirLightArbiter(dirLight.data());
+ arbiter.setArbiterOnNode(dirLight.data());
dirLight->setColor(Qt::blue);
dirLight->setIntensity(0.5f);
dirLight->setWorldDirection(QVector3D(0.5f, 0.0f, -1.0f));
QCoreApplication::processEvents();
- QCOMPARE(dirLightArbiter.events.size(), 3 * 2); // Due to contained shader data
+ QCOMPARE(arbiter.events.size(), 3 * 2); // Due to contained shader data
for (int i = 0; i < 3; i++)
- dirLightArbiter.events.removeAt(i);
- Qt3DCore::QPropertyUpdatedChangePtr change = dirLightArbiter.events[0].staticCast<Qt3DCore::QPropertyUpdatedChange>();
+ arbiter.events.removeAt(i);
+ Qt3DCore::QPropertyUpdatedChangePtr change = arbiter.events[0].staticCast<Qt3DCore::QPropertyUpdatedChange>();
QCOMPARE(change->propertyName(), "color");
QCOMPARE(change->subjectId(), dirLight->id());
QCOMPARE(change->value().value<QColor>(), QColor(Qt::blue));
QCOMPARE(change->type(), Qt3DCore::PropertyUpdated);
- change = dirLightArbiter.events[1].staticCast<Qt3DCore::QPropertyUpdatedChange>();
+ change = arbiter.events[1].staticCast<Qt3DCore::QPropertyUpdatedChange>();
QCOMPARE(change->propertyName(), "intensity");
QCOMPARE(change->subjectId(), dirLight->id());
QCOMPARE(change->value().value<float>(), 0.5f);
QCOMPARE(change->type(), Qt3DCore::PropertyUpdated);
- change = dirLightArbiter.events[2].staticCast<Qt3DCore::QPropertyUpdatedChange>();
+ change = arbiter.events[2].staticCast<Qt3DCore::QPropertyUpdatedChange>();
QCOMPARE(change->propertyName(), "worldDirection");
QCOMPARE(change->subjectId(), dirLight->id());
QCOMPARE(change->value().value<QVector3D>(), QVector3D(0.5f, 0.0f, -1.0f));
QCOMPARE(change->type(), Qt3DCore::PropertyUpdated);
- dirLightArbiter.events.clear();
+ arbiter.events.clear();
}
void checkSpotLightPropertyUpdates()
{
+ TestArbiter arbiter;
QScopedPointer<Qt3DRender::QSpotLight> spotLight(new Qt3DRender::QSpotLight);
- TestArbiter spotLightArbiter(spotLight.data());
+ arbiter.setArbiterOnNode(spotLight.data());
spotLight->setColor(Qt::lightGray);
spotLight->setIntensity(0.5f);
@@ -256,31 +260,31 @@ private Q_SLOTS:
spotLight->setCutOffAngle(0.75f);
QCoreApplication::processEvents();
- QCOMPARE(spotLightArbiter.events.size(), 4 * 2); // Due to contained shader data
+ QCOMPARE(arbiter.events.size(), 4 * 2); // Due to contained shader data
for (int i = 0; i < 4; i++)
- spotLightArbiter.events.removeAt(i);
- Qt3DCore::QPropertyUpdatedChangePtr change = spotLightArbiter.events[0].staticCast<Qt3DCore::QPropertyUpdatedChange>();
+ arbiter.events.removeAt(i);
+ Qt3DCore::QPropertyUpdatedChangePtr change = arbiter.events[0].staticCast<Qt3DCore::QPropertyUpdatedChange>();
QCOMPARE(change->propertyName(), "color");
QCOMPARE(change->subjectId(), spotLight->id());
QCOMPARE(change->value().value<QColor>(), QColor(Qt::lightGray));
QCOMPARE(change->type(), Qt3DCore::PropertyUpdated);
- change = spotLightArbiter.events[1].staticCast<Qt3DCore::QPropertyUpdatedChange>();
+ change = arbiter.events[1].staticCast<Qt3DCore::QPropertyUpdatedChange>();
QCOMPARE(change->propertyName(), "intensity");
QCOMPARE(change->subjectId(), spotLight->id());
QCOMPARE(change->value().value<float>(), 0.5f);
QCOMPARE(change->type(), Qt3DCore::PropertyUpdated);
- change = spotLightArbiter.events[2].staticCast<Qt3DCore::QPropertyUpdatedChange>();
+ change = arbiter.events[2].staticCast<Qt3DCore::QPropertyUpdatedChange>();
QCOMPARE(change->propertyName(), "localDirection");
QCOMPARE(change->subjectId(), spotLight->id());
QCOMPARE(change->value().value<QVector3D>(), QVector3D(0.5f, 0.0f, -1.0f));
QCOMPARE(change->type(), Qt3DCore::PropertyUpdated);
- change = spotLightArbiter.events[3].staticCast<Qt3DCore::QPropertyUpdatedChange>();
+ change = arbiter.events[3].staticCast<Qt3DCore::QPropertyUpdatedChange>();
QCOMPARE(change->propertyName(), "cutOffAngle");
QCOMPARE(change->subjectId(), spotLight->id());
QCOMPARE(change->value().value<float>(), 0.75f);
QCOMPARE(change->type(), Qt3DCore::PropertyUpdated);
- spotLightArbiter.events.clear();
+ arbiter.events.clear();
}
};
diff --git a/tests/auto/render/qattribute/tst_qattribute.cpp b/tests/auto/render/qattribute/tst_qattribute.cpp
index 9632f4fcb..48bdf5c33 100644
--- a/tests/auto/render/qattribute/tst_qattribute.cpp
+++ b/tests/auto/render/qattribute/tst_qattribute.cpp
@@ -115,8 +115,9 @@ private Q_SLOTS:
void checkPropertyUpdates()
{
// GIVEN
+ TestArbiter arbiter;
QScopedPointer<Qt3DRender::QAttribute> attribute(new Qt3DRender::QAttribute());
- TestArbiter arbiter(attribute.data());
+ arbiter.setArbiterOnNode(attribute.data());
// WHEN
attribute->setDataType(Qt3DRender::QAttribute::Double);
diff --git a/tests/auto/render/qbuffer/tst_qbuffer.cpp b/tests/auto/render/qbuffer/tst_qbuffer.cpp
index 566f16f13..995593971 100644
--- a/tests/auto/render/qbuffer/tst_qbuffer.cpp
+++ b/tests/auto/render/qbuffer/tst_qbuffer.cpp
@@ -125,8 +125,9 @@ private Q_SLOTS:
void checkPropertyUpdates()
{
// GIVEN
+ TestArbiter arbiter;
QScopedPointer<Qt3DRender::QBuffer> buffer(new Qt3DRender::QBuffer(Qt3DRender::QBuffer::VertexBuffer));
- TestArbiter arbiter(buffer.data());
+ arbiter.setArbiterOnNode(buffer.data());
// WHEN
buffer->setType(Qt3DRender::QBuffer::IndexBuffer);
diff --git a/tests/auto/render/qcameraselector/tst_qcameraselector.cpp b/tests/auto/render/qcameraselector/tst_qcameraselector.cpp
index ca6895f90..1cb3eaabf 100644
--- a/tests/auto/render/qcameraselector/tst_qcameraselector.cpp
+++ b/tests/auto/render/qcameraselector/tst_qcameraselector.cpp
@@ -85,8 +85,9 @@ private Q_SLOTS:
void checkPropertyUpdates()
{
// GIVEN
+ TestArbiter arbiter;
QScopedPointer<Qt3DRender::QCameraSelector> cameraSelector(new Qt3DRender::QCameraSelector());
- TestArbiter arbiter(cameraSelector.data());
+ arbiter.setArbiterOnNode(cameraSelector.data());
// WHEN
Qt3DCore::QEntity *camera = new Qt3DCore::QEntity();
diff --git a/tests/auto/render/qclearbuffers/tst_qclearbuffers.cpp b/tests/auto/render/qclearbuffers/tst_qclearbuffers.cpp
index e190d3c96..ce1493e10 100644
--- a/tests/auto/render/qclearbuffers/tst_qclearbuffers.cpp
+++ b/tests/auto/render/qclearbuffers/tst_qclearbuffers.cpp
@@ -98,8 +98,9 @@ private Q_SLOTS:
void checkPropertyUpdates()
{
// GIVEN
+ TestArbiter arbiter;
QScopedPointer<Qt3DRender::QClearBuffers> clearBuffer(new Qt3DRender::QClearBuffers());
- TestArbiter arbiter(clearBuffer.data());
+ arbiter.setArbiterOnNode(clearBuffer.data());
// WHEN
clearBuffer->setBuffers(Qt3DRender::QClearBuffers::AllBuffers);
diff --git a/tests/auto/render/qframegraphnode/tst_qframegraphnode.cpp b/tests/auto/render/qframegraphnode/tst_qframegraphnode.cpp
index 17f7e8546..5a5eb266e 100644
--- a/tests/auto/render/qframegraphnode/tst_qframegraphnode.cpp
+++ b/tests/auto/render/qframegraphnode/tst_qframegraphnode.cpp
@@ -102,8 +102,9 @@ private Q_SLOTS:
void checkPropertyUpdates()
{
// GIVEN
+ TestArbiter arbiter;
QScopedPointer<Qt3DRender::QFrameGraphNode> frameGraphNode(new MyFrameGraphNode());
- TestArbiter arbiter(frameGraphNode.data());
+ arbiter.setArbiterOnNode(frameGraphNode.data());
// WHEN
frameGraphNode->setEnabled(false);
diff --git a/tests/auto/render/qgeometry/tst_qgeometry.cpp b/tests/auto/render/qgeometry/tst_qgeometry.cpp
index 8e0974657..d07b410ee 100644
--- a/tests/auto/render/qgeometry/tst_qgeometry.cpp
+++ b/tests/auto/render/qgeometry/tst_qgeometry.cpp
@@ -108,8 +108,9 @@ private Q_SLOTS:
void checkPropertyUpdates()
{
// GIVEN
+ TestArbiter arbiter;
QScopedPointer<Qt3DRender::QGeometry> geometry(new Qt3DRender::QGeometry());
- TestArbiter arbiter(geometry.data());
+ arbiter.setArbiterOnNode(geometry.data());
// WHEN
Qt3DRender::QAttribute attr;
diff --git a/tests/auto/render/qgeometryrenderer/tst_qgeometryrenderer.cpp b/tests/auto/render/qgeometryrenderer/tst_qgeometryrenderer.cpp
index 11835be2d..d88b63dd8 100644
--- a/tests/auto/render/qgeometryrenderer/tst_qgeometryrenderer.cpp
+++ b/tests/auto/render/qgeometryrenderer/tst_qgeometryrenderer.cpp
@@ -150,8 +150,9 @@ private Q_SLOTS:
void checkPropertyUpdates()
{
// GIVEN
+ TestArbiter arbiter;
QScopedPointer<Qt3DRender::QGeometryRenderer> geometryRenderer(new Qt3DRender::QGeometryRenderer());
- TestArbiter arbiter(geometryRenderer.data());
+ arbiter.setArbiterOnNode(geometryRenderer.data());
// WHEN
geometryRenderer->setInstanceCount(256);
diff --git a/tests/auto/render/qlayerfilter/tst_qlayerfilter.cpp b/tests/auto/render/qlayerfilter/tst_qlayerfilter.cpp
index 60ea33f71..9c14af50e 100644
--- a/tests/auto/render/qlayerfilter/tst_qlayerfilter.cpp
+++ b/tests/auto/render/qlayerfilter/tst_qlayerfilter.cpp
@@ -112,8 +112,9 @@ private Q_SLOTS:
void checkPropertyUpdates()
{
// GIVEN
+ TestArbiter arbiter;
QScopedPointer<Qt3DRender::QLayerFilter> layerFilter(new Qt3DRender::QLayerFilter());
- TestArbiter arbiter(layerFilter.data());
+ arbiter.setArbiterOnNode(layerFilter.data());
// WHEN
auto layer = new Qt3DRender::QLayer(layersNode.data());
diff --git a/tests/auto/render/qmaterial/tst_qmaterial.cpp b/tests/auto/render/qmaterial/tst_qmaterial.cpp
index 437cfa5ad..d658b1b3e 100644
--- a/tests/auto/render/qmaterial/tst_qmaterial.cpp
+++ b/tests/auto/render/qmaterial/tst_qmaterial.cpp
@@ -246,8 +246,9 @@ private Q_SLOTS:
void checkEffectUpdate()
{
// GIVEN
+ TestArbiter arbiter;
QScopedPointer<Qt3DRender::QMaterial> material(new Qt3DRender::QMaterial());
- TestArbiter arbiter(material.data());
+ arbiter.setArbiterOnNode(material.data());
// WHEN
Qt3DRender::QEffect effect;
@@ -264,8 +265,9 @@ private Q_SLOTS:
arbiter.events.clear();
// GIVEN
+ TestArbiter arbiter2;
QScopedPointer<TestMaterial> material2(new TestMaterial());
- TestArbiter arbiter2(material2.data());
+ arbiter2.setArbiterOnNode(material2.data());
QCoreApplication::processEvents();
// Clear events trigger by child generation of TestMnterial
@@ -287,8 +289,9 @@ private Q_SLOTS:
void checkDynamicParametersAddedUpdates()
{
// GIVEN
+ TestArbiter arbiter;
TestMaterial *material = new TestMaterial();
- TestArbiter arbiter(material);
+ arbiter.setArbiterOnNode(material);
QCoreApplication::processEvents();
// Clear events trigger by child generation of TestMnterial
@@ -357,8 +360,9 @@ private Q_SLOTS:
void checkShaderProgramUpdates()
{
// GIVEN
+ TestArbiter arbiter;
TestMaterial *material = new TestMaterial();
- TestArbiter arbiter(material);
+ arbiter.setArbiterOnNode(material);
QCoreApplication::processEvents();
// Clear events trigger by child generation of TestMnterial
diff --git a/tests/auto/render/qobjectpicker/tst_qobjectpicker.cpp b/tests/auto/render/qobjectpicker/tst_qobjectpicker.cpp
index ff56d3590..4397954ec 100644
--- a/tests/auto/render/qobjectpicker/tst_qobjectpicker.cpp
+++ b/tests/auto/render/qobjectpicker/tst_qobjectpicker.cpp
@@ -103,8 +103,9 @@ private Q_SLOTS:
void checkPropertyUpdates()
{
// GIVEN
+ TestArbiter arbiter;
QScopedPointer<Qt3DRender::QObjectPicker> objectPicker(new Qt3DRender::QObjectPicker());
- TestArbiter arbiter(objectPicker.data());
+ arbiter.setArbiterOnNode(objectPicker.data());
// WHEN
objectPicker->setHoverEnabled(true);
diff --git a/tests/auto/render/qrenderpassfilter/tst_qrenderpassfilter.cpp b/tests/auto/render/qrenderpassfilter/tst_qrenderpassfilter.cpp
index 9e6e4fcc1..8e1565bdf 100644
--- a/tests/auto/render/qrenderpassfilter/tst_qrenderpassfilter.cpp
+++ b/tests/auto/render/qrenderpassfilter/tst_qrenderpassfilter.cpp
@@ -144,8 +144,9 @@ private Q_SLOTS:
void checkPropertyUpdates()
{
// GIVEN
+ TestArbiter arbiter;
QScopedPointer<Qt3DRender::QRenderPassFilter> renderPassFilter(new Qt3DRender::QRenderPassFilter());
- TestArbiter arbiter(renderPassFilter.data());
+ arbiter.setArbiterOnNode(renderPassFilter.data());
// WHEN
Qt3DRender::QParameter *param1 = new Qt3DRender::QParameter();
diff --git a/tests/auto/render/qrenderstateset/tst_qrenderstateset.cpp b/tests/auto/render/qrenderstateset/tst_qrenderstateset.cpp
index 073306237..6782ef8f7 100644
--- a/tests/auto/render/qrenderstateset/tst_qrenderstateset.cpp
+++ b/tests/auto/render/qrenderstateset/tst_qrenderstateset.cpp
@@ -130,8 +130,9 @@ private Q_SLOTS:
void checkPropertyUpdates()
{
// GIVEN
+ TestArbiter arbiter;
QScopedPointer<Qt3DRender::QRenderStateSet> stateSet(new Qt3DRender::QRenderStateSet());
- TestArbiter arbiter(stateSet.data());
+ arbiter.setArbiterOnNode(stateSet.data());
// WHEN
Qt3DRender::QRenderState *state1 = new MyStateSet();
diff --git a/tests/auto/render/qrendertargetselector/tst_qrendertargetselector.cpp b/tests/auto/render/qrendertargetselector/tst_qrendertargetselector.cpp
index b4cb479ba..1ed546c13 100644
--- a/tests/auto/render/qrendertargetselector/tst_qrendertargetselector.cpp
+++ b/tests/auto/render/qrendertargetselector/tst_qrendertargetselector.cpp
@@ -107,8 +107,9 @@ private Q_SLOTS:
void checkPropertyUpdates()
{
// GIVEN
+ TestArbiter arbiter;
QScopedPointer<Qt3DRender::QRenderTargetSelector> renderTargetSelector(new Qt3DRender::QRenderTargetSelector());
- TestArbiter arbiter(renderTargetSelector.data());
+ arbiter.setArbiterOnNode(renderTargetSelector.data());
// WHEN
Qt3DRender::QRenderTarget *target = new Qt3DRender::QRenderTarget();
diff --git a/tests/auto/render/qsortpolicy/tst_qsortpolicy.cpp b/tests/auto/render/qsortpolicy/tst_qsortpolicy.cpp
index cd88785f5..020929e09 100644
--- a/tests/auto/render/qsortpolicy/tst_qsortpolicy.cpp
+++ b/tests/auto/render/qsortpolicy/tst_qsortpolicy.cpp
@@ -103,8 +103,9 @@ private Q_SLOTS:
void checkPropertyUpdates()
{
// GIVEN
+ TestArbiter arbiter;
QScopedPointer<Qt3DRender::QSortPolicy> sortPolicy(new Qt3DRender::QSortPolicy());
- TestArbiter arbiter(sortPolicy.data());
+ arbiter.setArbiterOnNode(sortPolicy.data());
// WHEN
Qt3DRender::QSortPolicy::SortType sortType1 = Qt3DRender::QSortPolicy::BackToFront;
diff --git a/tests/auto/render/qtechniquefilter/tst_qtechniquefilter.cpp b/tests/auto/render/qtechniquefilter/tst_qtechniquefilter.cpp
index 8438cf033..97fe917ae 100644
--- a/tests/auto/render/qtechniquefilter/tst_qtechniquefilter.cpp
+++ b/tests/auto/render/qtechniquefilter/tst_qtechniquefilter.cpp
@@ -149,8 +149,9 @@ private Q_SLOTS:
void checkPropertyUpdates()
{
// GIVEN
+ TestArbiter arbiter;
QScopedPointer<Qt3DRender::QTechniqueFilter> techniqueFilter(new Qt3DRender::QTechniqueFilter());
- TestArbiter arbiter(techniqueFilter.data());
+ arbiter.setArbiterOnNode(techniqueFilter.data());
// WHEN
Qt3DRender::QParameter *param1 = new Qt3DRender::QParameter();
diff --git a/tests/auto/render/qviewport/tst_qviewport.cpp b/tests/auto/render/qviewport/tst_qviewport.cpp
index 9ea758fcf..87b22e22b 100644
--- a/tests/auto/render/qviewport/tst_qviewport.cpp
+++ b/tests/auto/render/qviewport/tst_qviewport.cpp
@@ -87,8 +87,9 @@ private Q_SLOTS:
void checkPropertyUpdates()
{
// GIVEN
+ TestArbiter arbiter;
QScopedPointer<Qt3DRender::QViewport> viewport(new Qt3DRender::QViewport());
- TestArbiter arbiter(viewport.data());
+ arbiter.setArbiterOnNode(viewport.data());
// WHEN
viewport->setNormalizedRect(QRectF(0.5f, 0.5f, 1.0f, 1.0f));
diff --git a/tests/auto/render/renderviewutils/tst_renderviewutils.cpp b/tests/auto/render/renderviewutils/tst_renderviewutils.cpp
index 0278b52c7..1bda16cba 100644
--- a/tests/auto/render/renderviewutils/tst_renderviewutils.cpp
+++ b/tests/auto/render/renderviewutils/tst_renderviewutils.cpp
@@ -467,8 +467,9 @@ void tst_RenderViewUtils::topLevelDynamicProperties()
void tst_RenderViewUtils::shouldNotifyDynamicPropertyChanges()
{
// GIVEN
+ TestArbiter arbiter;
QScopedPointer<Qt3DRender::QShaderData> shaderData(new Qt3DRender::QShaderData());
- TestArbiter arbiter(shaderData.data());
+ arbiter.setArbiterOnNode(shaderData.data());
// WHEN
shaderData->setProperty("scalar", 883.0f);