Don't fire onGeoMappLoading twice

This commit is contained in:
Atlante45 2016-04-12 13:41:22 -07:00
parent 05895f628a
commit c8aeecdabd

View file

@ -46,6 +46,7 @@ private slots:
private: private:
GeometryResource::Pointer _geometryResource; GeometryResource::Pointer _geometryResource;
QMetaObject::Connection _connection;
}; };
void GeometryMappingResource::downloadFinished(const QByteArray& data) { void GeometryMappingResource::downloadFinished(const QByteArray& data) {
@ -77,21 +78,26 @@ void GeometryMappingResource::downloadFinished(const QByteArray& data) {
if (_geometryResource->isLoaded()) { if (_geometryResource->isLoaded()) {
onGeometryMappingLoaded(!_geometryResource->getURL().isEmpty()); onGeometryMappingLoaded(!_geometryResource->getURL().isEmpty());
} else { } else {
connect(_geometryResource.data(), &Resource::finished, this, &GeometryMappingResource::onGeometryMappingLoaded); if (_connection) {
disconnect(_connection);
}
_connection = connect(_geometryResource.data(), &Resource::finished,
this, &GeometryMappingResource::onGeometryMappingLoaded);
} }
} }
} }
void GeometryMappingResource::onGeometryMappingLoaded(bool success) { void GeometryMappingResource::onGeometryMappingLoaded(bool success) {
if (success) { if (success && _geometryResource) {
_geometry = _geometryResource->_geometry; _geometry = _geometryResource->_geometry;
_shapes = _geometryResource->_shapes; _shapes = _geometryResource->_shapes;
_meshes = _geometryResource->_meshes; _meshes = _geometryResource->_meshes;
_materials = _geometryResource->_materials; _materials = _geometryResource->_materials;
}
// Avoid holding onto extra references // Avoid holding onto extra references
_geometryResource.reset(); _geometryResource.reset();
}
finishedLoading(success); finishedLoading(success);
} }