summaryrefslogtreecommitdiffstats
path: root/src/input/backend
diff options
context:
space:
mode:
authorMike Krus <mike.krus@kdab.com>2019-09-30 09:51:43 +0100
committerMike Krus <mike.krus@kdab.com>2019-10-01 07:04:23 +0100
commit040d50f0e3c44739bb546ac96da251b03d7ac271 (patch)
treeb852e01a6190f926add7e07be3412cb09842064e /src/input/backend
parent07ef673479309ea6bfd57026be0fdb2ccdda0a9b (diff)
Update QMouseHandler to use direct sync
Change-Id: Ia3fe8a32ca2f750c866f8df91e53ff0ea4d53dcc Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'src/input/backend')
-rw-r--r--src/input/backend/mousehandler.cpp29
-rw-r--r--src/input/backend/mousehandler_p.h8
2 files changed, 13 insertions, 24 deletions
diff --git a/src/input/backend/mousehandler.cpp b/src/input/backend/mousehandler.cpp
index c492dcf28..e0b0f1e7f 100644
--- a/src/input/backend/mousehandler.cpp
+++ b/src/input/backend/mousehandler.cpp
@@ -56,7 +56,7 @@ namespace Qt3DInput {
namespace Input {
MouseHandler::MouseHandler()
- : QBackendNode(ReadWrite)
+ : BackendNode(ReadWrite)
, m_inputHandler(nullptr)
{
}
@@ -65,13 +65,6 @@ MouseHandler::~MouseHandler()
{
}
-void MouseHandler::initializeFromPeer(const Qt3DCore::QNodeCreatedChangeBasePtr &change)
-{
- const auto typedChange = qSharedPointerCast<Qt3DCore::QNodeCreatedChange<QMouseHandlerData>>(change);
- const auto &data = typedChange->data;
- setDevice(data.mouseDeviceId);
-}
-
Qt3DCore::QNodeId MouseHandler::mouseDevice() const
{
return m_mouseDevice;
@@ -102,18 +95,16 @@ void MouseHandler::wheelEvent(const QWheelEventPtr &event)
}
#endif
-void MouseHandler::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e)
+void MouseHandler::syncFromFrontEnd(const Qt3DCore::QNode *frontEnd, bool firstTime)
{
- if (e->type() == PropertyUpdated) {
- QPropertyUpdatedChangePtr propertyChange = qSharedPointerCast<QPropertyUpdatedChange>(e);
- if (propertyChange->propertyName() == QByteArrayLiteral("device")) {
- const QNodeId newId = propertyChange->value().value<QNodeId>();
- if (m_mouseDevice != newId) {
- setDevice(newId);
- }
- }
- }
- QBackendNode::sceneChangeEvent(e);
+ BackendNode::syncFromFrontEnd(frontEnd, firstTime);
+ const Qt3DInput::QMouseHandler *node = qobject_cast<const Qt3DInput::QMouseHandler *>(frontEnd);
+ if (!node)
+ return;
+
+ const auto newId = Qt3DCore::qIdForNode(node->sourceDevice());
+ if (m_mouseDevice != newId)
+ setDevice(newId);
}
void MouseHandler::setDevice(Qt3DCore::QNodeId device)
diff --git a/src/input/backend/mousehandler_p.h b/src/input/backend/mousehandler_p.h
index 6d748c068..dc1e210ac 100644
--- a/src/input/backend/mousehandler_p.h
+++ b/src/input/backend/mousehandler_p.h
@@ -52,7 +52,7 @@
//
#include <Qt3DInput/qmouseevent.h>
-#include <Qt3DCore/qbackendnode.h>
+#include <Qt3DInput/private/backendnode_p.h>
QT_BEGIN_NAMESPACE
@@ -61,7 +61,7 @@ namespace Input {
class InputHandler;
-class MouseHandler : public Qt3DCore::QBackendNode
+class MouseHandler : public BackendNode
{
public:
MouseHandler();
@@ -75,12 +75,10 @@ public:
#endif
protected:
- void sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e) override;
+ void syncFromFrontEnd(const Qt3DCore::QNode *frontEnd, bool firstTime) override;
void setDevice(Qt3DCore::QNodeId device);
private:
- void initializeFromPeer(const Qt3DCore::QNodeCreatedChangeBasePtr &change) final;
-
Qt3DCore::QNodeId m_mouseDevice;
InputHandler *m_inputHandler;
};