summaryrefslogtreecommitdiffstats
path: root/tests/auto/input
diff options
context:
space:
mode:
authorMike Krus <mike.krus@kdab.com>2019-08-06 15:30:01 +0100
committerPaul Lemire <paul.lemire@kdab.com>2019-08-28 06:30:29 +0200
commitf3268fcb2a4e73d99dbd66aa5e262a118b5a5480 (patch)
tree374bd9ace2fccaa33534f338950185368ab5598b /tests/auto/input
parent91dc1e1a61651a82a0ee5ce6ad3b24e82f526be6 (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')
-rw-r--r--tests/auto/input/qabstractaxisinput/tst_qabstractaxisinput.cpp10
-rw-r--r--tests/auto/input/qactioninput/tst_qactioninput.cpp20
-rw-r--r--tests/auto/input/qanalogaxisinput/tst_qanalogaxisinput.cpp20
-rw-r--r--tests/auto/input/qaxisaccumulator/tst_qaxisaccumulator.cpp31
-rw-r--r--tests/auto/input/qbuttonaxisinput/tst_qbuttonaxisinput.cpp52
-rw-r--r--tests/auto/input/qkeyboardhandler/tst_qkeyboardhandler.cpp20
-rw-r--r--tests/auto/input/qmousedevice/tst_qmousedevice.cpp16
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);
}
}