summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike Krus <mike.krus@kdab.com>2019-09-30 17:05:40 +0100
committerMike Krus <mike.krus@kdab.com>2019-10-01 09:18:04 +0100
commit3234ae05f0d16886bda586585ed8e4c827349187 (patch)
treeae18a68ee56c777b08a567da73831b4f81422fd8
parent90e7c5b5b4bfa4015b834adf7f0e744e48e25db3 (diff)
Update QPhysicalDeviceProxy to use direct sync
Change-Id: I0126310365663ae1be1d1cb8ebd4a896a5712c4a Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
-rw-r--r--src/input/backend/physicaldeviceproxy.cpp21
-rw-r--r--src/input/backend/physicaldeviceproxy_p.h8
-rw-r--r--src/input/frontend/qinputaspect.cpp2
-rw-r--r--tests/auto/input/loadproxydevicejob/tst_loadproxydevicejob.cpp4
-rw-r--r--tests/auto/input/physicaldeviceproxy/tst_physicaldeviceproxy.cpp8
5 files changed, 25 insertions, 18 deletions
diff --git a/src/input/backend/physicaldeviceproxy.cpp b/src/input/backend/physicaldeviceproxy.cpp
index 9512296b8..d0ed4356a 100644
--- a/src/input/backend/physicaldeviceproxy.cpp
+++ b/src/input/backend/physicaldeviceproxy.cpp
@@ -44,6 +44,7 @@
#include <QtCore/QCoreApplication>
#include <Qt3DInput/private/inputmanagers_p.h>
+#include <Qt3DInput/private/qabstractphysicaldeviceproxy_p.h>
#include <Qt3DInput/private/qabstractphysicaldeviceproxy_p_p.h>
QT_BEGIN_NAMESPACE
@@ -53,7 +54,7 @@ namespace Qt3DInput {
namespace Input {
PhysicalDeviceProxy::PhysicalDeviceProxy()
- : QBackendNode(QBackendNode::ReadWrite)
+ : BackendNode(QBackendNode::ReadWrite)
, m_manager(nullptr)
{
}
@@ -102,14 +103,20 @@ Qt3DCore::QNodeId PhysicalDeviceProxy::physicalDeviceId() const
return m_physicalDeviceId;
}
-void PhysicalDeviceProxy::initializeFromPeer(const Qt3DCore::QNodeCreatedChangeBasePtr &change)
+void PhysicalDeviceProxy::syncFromFrontEnd(const Qt3DCore::QNode *frontEnd, bool firstTime)
{
- const auto typedChange = qSharedPointerCast<Qt3DCore::QNodeCreatedChange<QAbstractPhysicalDeviceProxyData>>(change);
- const QAbstractPhysicalDeviceProxyData &data = typedChange->data;
- m_deviceName = data.deviceName;
+ BackendNode::syncFromFrontEnd(frontEnd, firstTime);
- // Request to load the actual device
- m_manager->addPendingProxyToLoad(peerId());
+ if (firstTime) {
+ const QAbstractPhysicalDeviceProxy *node = qobject_cast<const QAbstractPhysicalDeviceProxy *>(frontEnd);
+ if (!node)
+ return;
+
+ m_deviceName = node->deviceName();
+
+ // Request to load the actual device
+ m_manager->addPendingProxyToLoad(peerId());
+ }
}
PhysicalDeviceProxyNodeFunctor::PhysicalDeviceProxyNodeFunctor(PhysicalDeviceProxyManager *manager)
diff --git a/src/input/backend/physicaldeviceproxy_p.h b/src/input/backend/physicaldeviceproxy_p.h
index 9500a4adb..6dd2a54be 100644
--- a/src/input/backend/physicaldeviceproxy_p.h
+++ b/src/input/backend/physicaldeviceproxy_p.h
@@ -51,7 +51,7 @@
// We mean it.
//
-#include <Qt3DCore/qbackendnode.h>
+#include <Qt3DInput/private/backendnode_p.h>
#include <Qt3DCore/qnodeid.h>
QT_BEGIN_NAMESPACE
@@ -64,7 +64,7 @@ namespace Input {
class PhysicalDeviceProxyManager;
-class Q_AUTOTEST_EXPORT PhysicalDeviceProxy : public Qt3DCore::QBackendNode
+class Q_AUTOTEST_EXPORT PhysicalDeviceProxy : public BackendNode
{
public:
PhysicalDeviceProxy();
@@ -79,9 +79,9 @@ public:
void setDevice(QAbstractPhysicalDevice *device);
Qt3DCore::QNodeId physicalDeviceId() const;
-private:
- void initializeFromPeer(const Qt3DCore::QNodeCreatedChangeBasePtr &change) final;
+ void syncFromFrontEnd(const Qt3DCore::QNode *frontEnd, bool firstTime) override;
+private:
QString m_deviceName;
PhysicalDeviceProxyManager *m_manager;
Qt3DCore::QNodeId m_physicalDeviceId;
diff --git a/src/input/frontend/qinputaspect.cpp b/src/input/frontend/qinputaspect.cpp
index a2db40b95..44f4ec0ea 100644
--- a/src/input/frontend/qinputaspect.cpp
+++ b/src/input/frontend/qinputaspect.cpp
@@ -161,7 +161,7 @@ QInputAspect::QInputAspect(QInputAspectPrivate &dd, QObject *parent)
registerBackendType<QLogicalDevice, true>(QBackendNodeMapperPtr(new Input::LogicalDeviceNodeFunctor(d_func()->m_inputHandler->logicalDeviceManager())));
registerBackendType<QGenericInputDevice, true>(QBackendNodeMapperPtr(new Input::GenericDeviceBackendFunctor(this, d_func()->m_inputHandler.data())));
registerBackendType<QInputSettings, true>(QBackendNodeMapperPtr(new Input::InputSettingsFunctor(d_func()->m_inputHandler.data())));
- registerBackendType<QAbstractPhysicalDeviceProxy>(QBackendNodeMapperPtr(new Input::PhysicalDeviceProxyNodeFunctor(d_func()->m_inputHandler->physicalDeviceProxyManager())));
+ registerBackendType<QAbstractPhysicalDeviceProxy, true>(QBackendNodeMapperPtr(new Input::PhysicalDeviceProxyNodeFunctor(d_func()->m_inputHandler->physicalDeviceProxyManager())));
#ifdef HAVE_QGAMEPAD
registerBackendType<QGamepadInput>(QBackendNodeMapperPtr(new Input::GenericDeviceBackendFunctor(this, d_func()->m_inputHandler.data())));
diff --git a/tests/auto/input/loadproxydevicejob/tst_loadproxydevicejob.cpp b/tests/auto/input/loadproxydevicejob/tst_loadproxydevicejob.cpp
index a436959cc..5c069d15a 100644
--- a/tests/auto/input/loadproxydevicejob/tst_loadproxydevicejob.cpp
+++ b/tests/auto/input/loadproxydevicejob/tst_loadproxydevicejob.cpp
@@ -118,7 +118,7 @@ private Q_SLOTS:
{
backendProxy->setManager(manager);
Qt3DCore::QBackendNodeTester backendNodeCreator;
- backendNodeCreator.simulateInitialization(&proxy, backendProxy);
+ backendNodeCreator.simulateInitializationSync(&proxy, backendProxy);
Qt3DCore::QBackendNodePrivate::get(backendProxy)->setArbiter(&arbiter);
}
@@ -155,7 +155,7 @@ private Q_SLOTS:
{
backendProxy->setManager(manager);
Qt3DCore::QBackendNodeTester backendNodeCreator;
- backendNodeCreator.simulateInitialization(&proxy, backendProxy);
+ backendNodeCreator.simulateInitializationSync(&proxy, backendProxy);
Qt3DCore::QBackendNodePrivate::get(backendProxy)->setArbiter(&arbiter);
}
diff --git a/tests/auto/input/physicaldeviceproxy/tst_physicaldeviceproxy.cpp b/tests/auto/input/physicaldeviceproxy/tst_physicaldeviceproxy.cpp
index d19e69ecc..84ae82e43 100644
--- a/tests/auto/input/physicaldeviceproxy/tst_physicaldeviceproxy.cpp
+++ b/tests/auto/input/physicaldeviceproxy/tst_physicaldeviceproxy.cpp
@@ -69,7 +69,7 @@ private Q_SLOTS:
// WHEN
Qt3DInput::Input::PhysicalDeviceProxy backendPhysicalDeviceProxy;
backendPhysicalDeviceProxy.setManager(&manager);
- simulateInitialization(&PhysicalDeviceProxy, &backendPhysicalDeviceProxy);
+ simulateInitializationSync(&PhysicalDeviceProxy, &backendPhysicalDeviceProxy);
// THEN
QCOMPARE(backendPhysicalDeviceProxy.isEnabled(), true);
@@ -83,7 +83,7 @@ private Q_SLOTS:
Qt3DInput::Input::PhysicalDeviceProxy backendPhysicalDeviceProxy;
backendPhysicalDeviceProxy.setManager(&manager);
PhysicalDeviceProxy.setEnabled(false);
- simulateInitialization(&PhysicalDeviceProxy, &backendPhysicalDeviceProxy);
+ simulateInitializationSync(&PhysicalDeviceProxy, &backendPhysicalDeviceProxy);
// THEN
QCOMPARE(backendPhysicalDeviceProxy.peerId(), PhysicalDeviceProxy.id());
@@ -100,7 +100,7 @@ private Q_SLOTS:
// WHEN
backendPhysicalDeviceProxy.setManager(&manager);
- simulateInitialization(&deviceProxy, &backendPhysicalDeviceProxy);
+ simulateInitializationSync(&deviceProxy, &backendPhysicalDeviceProxy);
// THEN
QCOMPARE(backendPhysicalDeviceProxy.deviceName(), QStringLiteral("TestProxy"));
@@ -139,7 +139,7 @@ private Q_SLOTS:
// WHEN
backendPhysicalDeviceProxy.setManager(&manager);
- simulateInitialization(&deviceProxy, &backendPhysicalDeviceProxy);
+ simulateInitializationSync(&deviceProxy, &backendPhysicalDeviceProxy);
backendPhysicalDeviceProxy.cleanup();