summaryrefslogtreecommitdiffstats
path: root/src/quick3d/quick3drenderer/items/quick3dgeometry.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/quick3d/quick3drenderer/items/quick3dgeometry.cpp')
-rw-r--r--src/quick3d/quick3drenderer/items/quick3dgeometry.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/quick3d/quick3drenderer/items/quick3dgeometry.cpp b/src/quick3d/quick3drenderer/items/quick3dgeometry.cpp
index 125b8d7a9..67f39e851 100644
--- a/src/quick3d/quick3drenderer/items/quick3dgeometry.cpp
+++ b/src/quick3d/quick3drenderer/items/quick3dgeometry.cpp
@@ -61,6 +61,7 @@ QQmlListProperty<QAbstractAttribute> Quick3DGeometry::attributeList()
void Quick3DGeometry::appendAttribute(QQmlListProperty<QAbstractAttribute> *list, QAbstractAttribute *attribute)
{
Quick3DGeometry *geometry = static_cast<Quick3DGeometry *>(list->object);
+ geometry->m_managedAttributes.append(attribute);
geometry->parentGeometry()->addAttribute(attribute);
}
@@ -79,8 +80,10 @@ int Quick3DGeometry::attributesCount(QQmlListProperty<QAbstractAttribute> *list)
void Quick3DGeometry::clearAttributes(QQmlListProperty<QAbstractAttribute> *list)
{
Quick3DGeometry *geometry = static_cast<Quick3DGeometry *>(list->object);
- Q_FOREACH (QAbstractAttribute *attribute, geometry->parentGeometry()->attributes())
+ QVector<QAbstractAttribute *> &managedAttributes = geometry->m_managedAttributes;
+ Q_FOREACH (QAbstractAttribute *attribute, managedAttributes)
geometry->parentGeometry()->removeAttribute(attribute);
+ managedAttributes.clear();
}
} // Quick