summaryrefslogtreecommitdiffstats
path: root/src/render/geometry/geometryrenderer.cpp
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2018-01-19 11:53:41 +0100
committerPaul Lemire <paul.lemire@kdab.com>2018-01-22 06:09:00 +0000
commit32a511a667bab93d4fca2e71b38d89f8d76aa07c (patch)
tree3e16b4320b7241cb1c44a84365eacb93d9ee0851 /src/render/geometry/geometryrenderer.cpp
parentbf6d107b90b8a5e9f24da0c0f551c66952dbf57b (diff)
Mesh loading: send status update
Change-Id: Id4b73655ee30c3c225ee804f1e9244cc2b16aebf Task-number: QTBUG-60927 Reviewed-by: Mike Krus <mike.krus@kdab.com>
Diffstat (limited to 'src/render/geometry/geometryrenderer.cpp')
-rw-r--r--src/render/geometry/geometryrenderer.cpp34
1 files changed, 21 insertions, 13 deletions
diff --git a/src/render/geometry/geometryrenderer.cpp b/src/render/geometry/geometryrenderer.cpp
index 00b53fd8d..ea059c6ee 100644
--- a/src/render/geometry/geometryrenderer.cpp
+++ b/src/render/geometry/geometryrenderer.cpp
@@ -221,21 +221,29 @@ void GeometryRenderer::executeFunctor()
// If the geometry is null, then we were either unable to load it (Error)
// or the mesh is located at a remote url and needs to be downloaded first (Loading)
- if (!geometry)
- return;
-
- // Move the QGeometry object to the main thread and notify the
- // corresponding QGeometryRenderer
- const auto appThread = QCoreApplication::instance()->thread();
- geometry->moveToThread(appThread);
+ if (geometry != nullptr) {
+ // Move the QGeometry object to the main thread and notify the
+ // corresponding QGeometryRenderer
+ const auto appThread = QCoreApplication::instance()->thread();
+ geometry->moveToThread(appThread);
+
+ auto e = QGeometryChangePtr::create(peerId());
+ e->setDeliveryFlags(Qt3DCore::QSceneChange::Nodes);
+ e->setPropertyName("geometry");
+ e->data = std::move(geometry);
+ notifyObservers(e);
+ }
- auto e = QGeometryChangePtr::create(peerId());
- e->setDeliveryFlags(Qt3DCore::QSceneChange::Nodes);
- e->setPropertyName("geometry");
- e->data = std::move(geometry);
- notifyObservers(e);
+ // Send Status
+ if (isQMeshFunctor) {
+ QSharedPointer<MeshLoaderFunctor> meshLoader = qSharedPointerCast<MeshLoaderFunctor>(m_geometryFactory);
- // TODO: Maybe we could also send a status to help troubleshoot errors
+ auto e = QPropertyUpdatedChangePtr::create(peerId());
+ e->setDeliveryFlags(Qt3DCore::QSceneChange::Nodes);
+ e->setPropertyName("status");
+ e->setValue(meshLoader->status());
+ notifyObservers(e);
+ }
}
void GeometryRenderer::unsetDirty()