diff options
author | Mike Krus <mike.krus@kdab.com> | 2019-08-06 15:30:01 +0100 |
---|---|---|
committer | Paul Lemire <paul.lemire@kdab.com> | 2019-08-28 06:30:29 +0200 |
commit | f3268fcb2a4e73d99dbd66aa5e262a118b5a5480 (patch) | |
tree | 374bd9ace2fccaa33534f338950185368ab5598b /tests/auto/input | |
parent | 91dc1e1a61651a82a0ee5ce6ad3b24e82f526be6 (diff) |
Do direct notification of backend nodeswip/refactor
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 <mike.krus@kdab.com>
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'tests/auto/input')
7 files changed, 50 insertions, 119 deletions
diff --git a/tests/auto/input/qabstractaxisinput/tst_qabstractaxisinput.cpp b/tests/auto/input/qabstractaxisinput/tst_qabstractaxisinput.cpp index 87f738367..44bb64ea4 100644 --- a/tests/auto/input/qabstractaxisinput/tst_qabstractaxisinput.cpp +++ b/tests/auto/input/qabstractaxisinput/tst_qabstractaxisinput.cpp @@ -72,16 +72,12 @@ private Q_SLOTS: arbiter.events.clear(); axisInput->setSourceDevice(device); - QCoreApplication::processEvents(); // THEN - QCOMPARE(arbiter.events.size(), 1); - Qt3DCore::QPropertyUpdatedChangePtr change = arbiter.events.first().staticCast<Qt3DCore::QPropertyUpdatedChange>(); - QCOMPARE(change->propertyName(), "sourceDevice"); - QCOMPARE(change->value().value<Qt3DCore::QNodeId>(), device->id()); - QCOMPARE(change->type(), Qt3DCore::PropertyUpdated); + QCOMPARE(arbiter.dirtyNodes.size(), 1); + QCOMPARE(arbiter.dirtyNodes.front(), axisInput.data()); - arbiter.events.clear(); + arbiter.dirtyNodes.clear(); } void checkSourceDeviceBookkeeping() diff --git a/tests/auto/input/qactioninput/tst_qactioninput.cpp b/tests/auto/input/qactioninput/tst_qactioninput.cpp index 3b6030673..be06cd8b2 100644 --- a/tests/auto/input/qactioninput/tst_qactioninput.cpp +++ b/tests/auto/input/qactioninput/tst_qactioninput.cpp @@ -101,16 +101,12 @@ private Q_SLOTS: // WHEN QVector<int> buttons = QVector<int>() << 555; actionInput->setButtons(buttons); - QCoreApplication::processEvents(); // THEN - QCOMPARE(arbiter.events.size(), 1); - Qt3DCore::QPropertyUpdatedChangePtr change = arbiter.events.first().staticCast<Qt3DCore::QPropertyUpdatedChange>(); - QCOMPARE(change->propertyName(), "buttons"); - QCOMPARE(change->value().value<QVector<int>>(), buttons); - QCOMPARE(change->type(), Qt3DCore::PropertyUpdated); + QCOMPARE(arbiter.dirtyNodes.size(), 1); + QCOMPARE(arbiter.dirtyNodes.front(), actionInput.data()); - arbiter.events.clear(); + arbiter.dirtyNodes.clear(); // WHEN TestDevice *device = new TestDevice(actionInput.data()); @@ -118,16 +114,12 @@ private Q_SLOTS: arbiter.events.clear(); actionInput->setSourceDevice(device); - QCoreApplication::processEvents(); // THEN - QCOMPARE(arbiter.events.size(), 1); - change = arbiter.events.first().staticCast<Qt3DCore::QPropertyUpdatedChange>(); - QCOMPARE(change->propertyName(), "sourceDevice"); - QCOMPARE(change->value().value<Qt3DCore::QNodeId>(), device->id()); - QCOMPARE(change->type(), Qt3DCore::PropertyUpdated); + QCOMPARE(arbiter.dirtyNodes.size(), 1); + QCOMPARE(arbiter.dirtyNodes.front(), actionInput.data()); - arbiter.events.clear(); + arbiter.dirtyNodes.clear(); } void checkSourceDeviceBookkeeping() diff --git a/tests/auto/input/qanalogaxisinput/tst_qanalogaxisinput.cpp b/tests/auto/input/qanalogaxisinput/tst_qanalogaxisinput.cpp index da22ca165..c9abd0f4b 100644 --- a/tests/auto/input/qanalogaxisinput/tst_qanalogaxisinput.cpp +++ b/tests/auto/input/qanalogaxisinput/tst_qanalogaxisinput.cpp @@ -97,16 +97,12 @@ private Q_SLOTS: // WHEN axisInput->setAxis(350); - QCoreApplication::processEvents(); // THEN - QCOMPARE(arbiter.events.size(), 1); - Qt3DCore::QPropertyUpdatedChangePtr change = arbiter.events.first().staticCast<Qt3DCore::QPropertyUpdatedChange>(); - QCOMPARE(change->propertyName(), "axis"); - QCOMPARE(change->value().toInt(), 350); - QCOMPARE(change->type(), Qt3DCore::PropertyUpdated); + QCOMPARE(arbiter.dirtyNodes.size(), 1); + QCOMPARE(arbiter.dirtyNodes.front(), axisInput.data()); - arbiter.events.clear(); + arbiter.dirtyNodes.clear(); // WHEN TestDevice *device = new TestDevice(axisInput.data()); @@ -114,16 +110,12 @@ private Q_SLOTS: arbiter.events.clear(); axisInput->setSourceDevice(device); - QCoreApplication::processEvents(); // THEN - QCOMPARE(arbiter.events.size(), 1); - change = arbiter.events.first().staticCast<Qt3DCore::QPropertyUpdatedChange>(); - QCOMPARE(change->propertyName(), "sourceDevice"); - QCOMPARE(change->value().value<Qt3DCore::QNodeId>(), device->id()); - QCOMPARE(change->type(), Qt3DCore::PropertyUpdated); + QCOMPARE(arbiter.dirtyNodes.size(), 1); + QCOMPARE(arbiter.dirtyNodes.front(), axisInput.data()); - arbiter.events.clear(); + arbiter.dirtyNodes.clear(); } }; diff --git a/tests/auto/input/qaxisaccumulator/tst_qaxisaccumulator.cpp b/tests/auto/input/qaxisaccumulator/tst_qaxisaccumulator.cpp index 2447c564d..492573fd8 100644 --- a/tests/auto/input/qaxisaccumulator/tst_qaxisaccumulator.cpp +++ b/tests/auto/input/qaxisaccumulator/tst_qaxisaccumulator.cpp @@ -131,42 +131,31 @@ private Q_SLOTS: // WHEN accumulator->setSourceAxis(axis); - QCoreApplication::processEvents(); // THEN - QCOMPARE(arbiter.events.size(), 1); - Qt3DCore::QPropertyUpdatedChangePtr change = arbiter.events.first().staticCast<Qt3DCore::QPropertyUpdatedChange>(); - QCOMPARE(change->propertyName(), "sourceAxis"); - QCOMPARE(change->value().value<Qt3DCore::QNodeId>(), axis->id()); - QCOMPARE(change->type(), Qt3DCore::PropertyUpdated); + QCOMPARE(arbiter.dirtyNodes.size(), 1); + QCOMPARE(arbiter.dirtyNodes.front(), accumulator.data()); + + arbiter.dirtyNodes.clear(); - arbiter.events.clear(); // WHEN accumulator->setScale(2.0f); - QCoreApplication::processEvents(); // THEN - QCOMPARE(arbiter.events.size(), 1); - change = arbiter.events.first().staticCast<Qt3DCore::QPropertyUpdatedChange>(); - QCOMPARE(change->propertyName(), "scale"); - QCOMPARE(change->value().toFloat(), 2.0f); - QCOMPARE(change->type(), Qt3DCore::PropertyUpdated); + QCOMPARE(arbiter.dirtyNodes.size(), 1); + QCOMPARE(arbiter.dirtyNodes.front(), accumulator.data()); - arbiter.events.clear(); + arbiter.dirtyNodes.clear(); // WHEN accumulator->setSourceAxisType(Qt3DInput::QAxisAccumulator::Acceleration); - QCoreApplication::processEvents(); // THEN - QCOMPARE(arbiter.events.size(), 1); - change = arbiter.events.first().staticCast<Qt3DCore::QPropertyUpdatedChange>(); - QCOMPARE(change->propertyName(), "sourceAxisType"); - QCOMPARE(change->value().value<Qt3DInput::QAxisAccumulator::SourceAxisType>(), Qt3DInput::QAxisAccumulator::Acceleration); - QCOMPARE(change->type(), Qt3DCore::PropertyUpdated); + QCOMPARE(arbiter.dirtyNodes.size(), 1); + QCOMPARE(arbiter.dirtyNodes.front(), accumulator.data()); - arbiter.events.clear(); + arbiter.dirtyNodes.clear(); } void checkValuePropertyChanged() diff --git a/tests/auto/input/qbuttonaxisinput/tst_qbuttonaxisinput.cpp b/tests/auto/input/qbuttonaxisinput/tst_qbuttonaxisinput.cpp index 618c75d42..924c1f080 100644 --- a/tests/auto/input/qbuttonaxisinput/tst_qbuttonaxisinput.cpp +++ b/tests/auto/input/qbuttonaxisinput/tst_qbuttonaxisinput.cpp @@ -121,72 +121,50 @@ private Q_SLOTS: // WHEN QVector<int> buttons = QVector<int>() << 555; axisInput->setButtons(buttons); - QCoreApplication::processEvents(); // THEN - QCOMPARE(arbiter.events.size(), 1); - Qt3DCore::QPropertyUpdatedChangePtr change = arbiter.events.first().staticCast<Qt3DCore::QPropertyUpdatedChange>(); - QCOMPARE(change->propertyName(), "buttons"); - QCOMPARE(change->value().value<QVector<int>>(), buttons); - QCOMPARE(change->type(), Qt3DCore::PropertyUpdated); + QCOMPARE(arbiter.dirtyNodes.size(), 1); + QCOMPARE(arbiter.dirtyNodes.front(), axisInput.data()); - arbiter.events.clear(); + arbiter.dirtyNodes.clear(); // WHEN axisInput->setScale(1340.0f); - QCoreApplication::processEvents(); // THEN - QCOMPARE(arbiter.events.size(), 1); - change = arbiter.events.first().staticCast<Qt3DCore::QPropertyUpdatedChange>(); - QCOMPARE(change->propertyName(), "scale"); - QCOMPARE(change->value().toFloat(), 1340.0f); - QCOMPARE(change->type(), Qt3DCore::PropertyUpdated); + QCOMPARE(arbiter.dirtyNodes.size(), 1); + QCOMPARE(arbiter.dirtyNodes.front(), axisInput.data()); - arbiter.events.clear(); + arbiter.dirtyNodes.clear(); // WHEN TestDevice *device = new TestDevice(axisInput.data()); - QCoreApplication::processEvents(); - arbiter.events.clear(); axisInput->setSourceDevice(device); - QCoreApplication::processEvents(); // THEN - QCOMPARE(arbiter.events.size(), 1); - change = arbiter.events.first().staticCast<Qt3DCore::QPropertyUpdatedChange>(); - QCOMPARE(change->propertyName(), "sourceDevice"); - QCOMPARE(change->value().value<Qt3DCore::QNodeId>(), device->id()); - QCOMPARE(change->type(), Qt3DCore::PropertyUpdated); + QCOMPARE(arbiter.dirtyNodes.size(), 1); + QCOMPARE(arbiter.dirtyNodes.front(), axisInput.data()); - arbiter.events.clear(); + arbiter.dirtyNodes.clear(); // WHEN axisInput->setAcceleration(42.0f); - QCoreApplication::processEvents(); // THEN - QCOMPARE(arbiter.events.size(), 1); - change = arbiter.events.first().staticCast<Qt3DCore::QPropertyUpdatedChange>(); - QCOMPARE(change->propertyName(), "acceleration"); - QCOMPARE(change->value().toFloat(), 42.0f); - QCOMPARE(change->type(), Qt3DCore::PropertyUpdated); + QCOMPARE(arbiter.dirtyNodes.size(), 1); + QCOMPARE(arbiter.dirtyNodes.front(), axisInput.data()); - arbiter.events.clear(); + arbiter.dirtyNodes.clear(); // WHEN axisInput->setDeceleration(43.0f); - QCoreApplication::processEvents(); // THEN - QCOMPARE(arbiter.events.size(), 1); - change = arbiter.events.first().staticCast<Qt3DCore::QPropertyUpdatedChange>(); - QCOMPARE(change->propertyName(), "deceleration"); - QCOMPARE(change->value().toFloat(), 43.0f); - QCOMPARE(change->type(), Qt3DCore::PropertyUpdated); + QCOMPARE(arbiter.dirtyNodes.size(), 1); + QCOMPARE(arbiter.dirtyNodes.front(), axisInput.data()); - arbiter.events.clear(); + arbiter.dirtyNodes.clear(); } }; diff --git a/tests/auto/input/qkeyboardhandler/tst_qkeyboardhandler.cpp b/tests/auto/input/qkeyboardhandler/tst_qkeyboardhandler.cpp index f35d6490f..426a50237 100644 --- a/tests/auto/input/qkeyboardhandler/tst_qkeyboardhandler.cpp +++ b/tests/auto/input/qkeyboardhandler/tst_qkeyboardhandler.cpp @@ -96,16 +96,12 @@ private Q_SLOTS: // WHEN keyboardHandler->setFocus(true); - QCoreApplication::processEvents(); // THEN - QCOMPARE(arbiter.events.size(), 1); - Qt3DCore::QPropertyUpdatedChangePtr change = arbiter.events.first().staticCast<Qt3DCore::QPropertyUpdatedChange>(); - QCOMPARE(change->propertyName(), "focus"); - QCOMPARE(change->value().toBool(), true); - QCOMPARE(change->type(), Qt3DCore::PropertyUpdated); + QCOMPARE(arbiter.dirtyNodes.size(), 1); + QCOMPARE(arbiter.dirtyNodes.front(), keyboardHandler.data()); - arbiter.events.clear(); + arbiter.dirtyNodes.clear(); // WHEN auto device = new Qt3DInput::QKeyboardDevice(keyboardHandler.data()); @@ -113,16 +109,12 @@ private Q_SLOTS: arbiter.events.clear(); keyboardHandler->setSourceDevice(device); - QCoreApplication::processEvents(); // THEN - QCOMPARE(arbiter.events.size(), 1); - change = arbiter.events.first().staticCast<Qt3DCore::QPropertyUpdatedChange>(); - QCOMPARE(change->propertyName(), "sourceDevice"); - QCOMPARE(change->value().value<Qt3DCore::QNodeId>(), device->id()); - QCOMPARE(change->type(), Qt3DCore::PropertyUpdated); + QCOMPARE(arbiter.dirtyNodes.size(), 1); + QCOMPARE(arbiter.dirtyNodes.front(), keyboardHandler.data()); - arbiter.events.clear(); + arbiter.dirtyNodes.clear(); } void checkSourceDeviceBookkeeping() diff --git a/tests/auto/input/qmousedevice/tst_qmousedevice.cpp b/tests/auto/input/qmousedevice/tst_qmousedevice.cpp index 6ea085184..58d260d16 100644 --- a/tests/auto/input/qmousedevice/tst_qmousedevice.cpp +++ b/tests/auto/input/qmousedevice/tst_qmousedevice.cpp @@ -161,25 +161,17 @@ private Q_SLOTS: { // WHEN mouseDevice.setSensitivity(0.7f); - QCoreApplication::processEvents(); - // THEN - QCOMPARE(arbiter.events.size(), 1); - auto change = arbiter.events.first().staticCast<Qt3DCore::QPropertyUpdatedChange>(); - QCOMPARE(change->propertyName(), "sensitivity"); - QCOMPARE(change->value().value<float>(), mouseDevice.sensitivity()); - QCOMPARE(change->type(), Qt3DCore::PropertyUpdated); - - arbiter.events.clear(); + QCOMPARE(arbiter.dirtyNodes.size(), 1); + QCOMPARE(arbiter.dirtyNodes.front(), &mouseDevice); } { // WHEN mouseDevice.setSensitivity(0.7f); - QCoreApplication::processEvents(); - // THEN - QCOMPARE(arbiter.events.size(), 0); + QCOMPARE(arbiter.dirtyNodes.size(), 1); + QCOMPARE(arbiter.dirtyNodes.front(), &mouseDevice); } } |