diff options
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); |