summaryrefslogtreecommitdiffstats
path: root/src/datavisualization/engine
diff options
context:
space:
mode:
authorTomi Korpipaa <tomi.korpipaa@qt.io>2022-08-25 09:07:45 +0300
committerTomi Korpipaa <tomi.korpipaa@qt.io>2022-08-26 11:03:04 +0300
commit449f644df503dc409514cafd7b46ee8664e4d451 (patch)
tree3b5fdba3a3ffb6a3ae317f30ec5bacdadf083810 /src/datavisualization/engine
parenteae43d7f21b29a8d40e2f12f418efd7f9a35a43c (diff)
Do not crash if custom object load fails
There was no check for the existence of UVs or normals in an OBJ file. A check for those was added. Additionally a debug message was added in case model loading fails due to missing UVs or normals. Furthermore, we no more qFatal out when custom object loading fails. Pick-to: 6.2 6.4 Fixes: QTBUG-105398 Change-Id: Ie2742fb4307fe117e313cedf8111bc8f460f9c7b Reviewed-by: Sami Varanka <sami.varanka@qt.io> Reviewed-by: Kwanghyo Park <kwanghyo.park@qt.io> Reviewed-by: Dilek Akcay Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
Diffstat (limited to 'src/datavisualization/engine')
-rw-r--r--src/datavisualization/engine/abstract3drenderer.cpp11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/datavisualization/engine/abstract3drenderer.cpp b/src/datavisualization/engine/abstract3drenderer.cpp
index 4ddd19e8..b7a37a20 100644
--- a/src/datavisualization/engine/abstract3drenderer.cpp
+++ b/src/datavisualization/engine/abstract3drenderer.cpp
@@ -723,8 +723,10 @@ void Abstract3DRenderer::updateCustomData(const QList<QCustom3DItem *> &customIt
CustomRenderItem *renderItem = m_customRenderCache.value(item);
if (!renderItem)
renderItem = addCustomItem(item);
- renderItem->setValid(true);
- renderItem->setIndex(i); // always update index, as it must match the custom item index
+ if (renderItem) {
+ renderItem->setValid(true);
+ renderItem->setIndex(i); // always update index, as it must match the custom item index
+ }
}
// Check render item cache and remove items that are not in customItems list anymore
@@ -1127,7 +1129,10 @@ CustomRenderItem *Abstract3DRenderer::addCustomItem(QCustom3DItem *item)
CustomRenderItem *newItem = new CustomRenderItem();
newItem->setRenderer(this);
newItem->setItemPointer(item); // Store pointer for render item updates
- newItem->setMesh(item->meshFile());
+ if (!newItem->setMesh(item->meshFile())) {
+ delete newItem;
+ return nullptr;
+ }
newItem->setOrigPosition(item->position());
newItem->setOrigScaling(item->scaling());
newItem->setScalingAbsolute(item->isScalingAbsolute());