diff options
author | Sean Harmer <sean.harmer@kdab.com> | 2016-04-10 17:34:02 +0100 |
---|---|---|
committer | Paul Lemire <paul.lemire@kdab.com> | 2016-04-12 12:48:51 +0000 |
commit | 54fc2c8b4889f46bc3e4b0763dbc42c0cdd55c60 (patch) | |
tree | 3d4eff2e345436e5018a60c046ee94ec81a89cd3 | |
parent | 5dfc07541d1d63563114814d799b1b6540ef021f (diff) |
Only case to QScenePropertyChange if that's actually what it is
Now that we also have QNodeCreatedChange/QNodeDestroyedChange we need
to protect against casting to incorrect types.
It may well make sense to have a helper on QBackendNode that calls a
specific virtual for the different change types. This would be
analogous to QObject::event() calling e.g. resizeEvent() with an
argument properly cast to the right type.
Change-Id: I5313ba43c39b6e47f3fdf1f8f26f3e6d57a5677c
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
-rw-r--r-- | src/render/geometry/geometryrenderer.cpp | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/render/geometry/geometryrenderer.cpp b/src/render/geometry/geometryrenderer.cpp index d6f610a46..0c0bb1cc8 100644 --- a/src/render/geometry/geometryrenderer.cpp +++ b/src/render/geometry/geometryrenderer.cpp @@ -142,12 +142,11 @@ void GeometryRenderer::initializeFromPeer(const Qt3DCore::QNodeCreatedChangeBase void GeometryRenderer::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e) { - QScenePropertyChangePtr propertyChange = qSharedPointerCast<QScenePropertyChange>(e); - QByteArray propertyName = propertyChange->propertyName(); - switch (e->type()) { - case NodeUpdated: { + QScenePropertyChangePtr propertyChange = qSharedPointerCast<QScenePropertyChange>(e); + QByteArray propertyName = propertyChange->propertyName(); + if (propertyName == QByteArrayLiteral("instanceCount")) { m_instanceCount = propertyChange->value().value<int>(); m_dirty = true; @@ -185,6 +184,9 @@ void GeometryRenderer::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e) } case NodeAdded: { + QScenePropertyChangePtr propertyChange = qSharedPointerCast<QScenePropertyChange>(e); + QByteArray propertyName = propertyChange->propertyName(); + if (propertyName == QByteArrayLiteral("geometry")) { m_geometryId = propertyChange->value().value<QNodeId>(); m_dirty = true; @@ -193,6 +195,9 @@ void GeometryRenderer::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e) } case NodeRemoved: { + QScenePropertyChangePtr propertyChange = qSharedPointerCast<QScenePropertyChange>(e); + QByteArray propertyName = propertyChange->propertyName(); + if (propertyName == QByteArrayLiteral("geometry")) { m_geometryId = QNodeId(); m_dirty = true; |