From f3268fcb2a4e73d99dbd66aa5e262a118b5a5480 Mon Sep 17 00:00:00 2001 From: Mike Krus Date: Tue, 6 Aug 2019 15:30:01 +0100 Subject: Do direct notification of backend nodes Since aspect manager is now on main thread, we can directly update backend nodes safely. Track nodes which have changed properties and notify the backend nodes as part of the frame loop. This avoid allocating and delivering many change messages. To follow: - implement on all nodes - look at backend to frontend syncing - figure out what to do with non property messages (components added/removed, commands, ...) Change-Id: Ia0c442b0528e728c4324d168200bae021bc29266 Reviewed-by: Mike Krus Reviewed-by: Paul Lemire --- .../render/qframegraphnode/tst_qframegraphnode.cpp | 25 +++++++++------------- 1 file changed, 10 insertions(+), 15 deletions(-) (limited to 'tests/auto/render/qframegraphnode') diff --git a/tests/auto/render/qframegraphnode/tst_qframegraphnode.cpp b/tests/auto/render/qframegraphnode/tst_qframegraphnode.cpp index 1e19d8609..24febdac4 100644 --- a/tests/auto/render/qframegraphnode/tst_qframegraphnode.cpp +++ b/tests/auto/render/qframegraphnode/tst_qframegraphnode.cpp @@ -181,14 +181,11 @@ private Q_SLOTS: QCoreApplication::processEvents(); // THEN - QCOMPARE(arbiter.events.size(), 1); - Qt3DCore::QPropertyUpdatedChangePtr change = arbiter.events.first().staticCast(); - QCOMPARE(change->propertyName(), "enabled"); - QCOMPARE(change->subjectId(), frameGraphNode->id()); - QCOMPARE(change->value().toBool(), false); - QCOMPARE(change->type(), Qt3DCore::PropertyUpdated); + QCOMPARE(arbiter.events.size(), 0); + QCOMPARE(arbiter.dirtyNodes.size(), 1); + QCOMPARE(arbiter.dirtyNodes.front(), frameGraphNode.data()); - arbiter.events.clear(); + arbiter.dirtyNodes.clear(); // WHEN frameGraphNode->setEnabled(false); @@ -196,20 +193,18 @@ private Q_SLOTS: // THEN QCOMPARE(arbiter.events.size(), 0); + QCOMPARE(arbiter.dirtyNodes.size(), 0); // WHEN frameGraphNode->setEnabled(true); QCoreApplication::processEvents(); // THEN - QCOMPARE(arbiter.events.size(), 1); - change = arbiter.events.first().staticCast(); - QCOMPARE(change->propertyName(), "enabled"); - QCOMPARE(change->subjectId(), frameGraphNode->id()); - QCOMPARE(change->value().toBool(), true); - QCOMPARE(change->type(), Qt3DCore::PropertyUpdated); - - arbiter.events.clear(); + QCOMPARE(arbiter.events.size(), 0); + QCOMPARE(arbiter.dirtyNodes.size(), 1); + QCOMPARE(arbiter.dirtyNodes.front(), frameGraphNode.data()); + + arbiter.dirtyNodes.clear(); } void checkParentFrameNodeRetrieval() -- cgit v1.2.3