summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSean Harmer <sean.harmer@kdab.com>2016-04-10 17:34:02 +0100
committerPaul Lemire <paul.lemire@kdab.com>2016-04-12 12:48:51 +0000
commit54fc2c8b4889f46bc3e4b0763dbc42c0cdd55c60 (patch)
tree3d4eff2e345436e5018a60c046ee94ec81a89cd3
parent5dfc07541d1d63563114814d799b1b6540ef021f (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.cpp13
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;