diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2018-01-19 11:53:41 +0100 |
---|---|---|
committer | Paul Lemire <paul.lemire@kdab.com> | 2018-01-22 06:09:00 +0000 |
commit | 32a511a667bab93d4fca2e71b38d89f8d76aa07c (patch) | |
tree | 3e16b4320b7241cb1c44a84365eacb93d9ee0851 /src/render/geometry/geometryrenderer.cpp | |
parent | bf6d107b90b8a5e9f24da0c0f551c66952dbf57b (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.cpp | 34 |
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() |