From c8aeecdabdacefa902528d2f8c3f2bb298f1f575 Mon Sep 17 00:00:00 2001 From: Atlante45 Date: Tue, 12 Apr 2016 13:41:22 -0700 Subject: [PATCH] Don't fire onGeoMappLoading twice --- .../src/model-networking/ModelCache.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/libraries/model-networking/src/model-networking/ModelCache.cpp b/libraries/model-networking/src/model-networking/ModelCache.cpp index b8deef9f27..387c59e7f4 100644 --- a/libraries/model-networking/src/model-networking/ModelCache.cpp +++ b/libraries/model-networking/src/model-networking/ModelCache.cpp @@ -46,6 +46,7 @@ private slots: private: GeometryResource::Pointer _geometryResource; + QMetaObject::Connection _connection; }; void GeometryMappingResource::downloadFinished(const QByteArray& data) { @@ -77,21 +78,26 @@ void GeometryMappingResource::downloadFinished(const QByteArray& data) { if (_geometryResource->isLoaded()) { onGeometryMappingLoaded(!_geometryResource->getURL().isEmpty()); } 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) { - if (success) { + if (success && _geometryResource) { _geometry = _geometryResource->_geometry; _shapes = _geometryResource->_shapes; _meshes = _geometryResource->_meshes; _materials = _geometryResource->_materials; - } - // Avoid holding onto extra references - _geometryResource.reset(); + // Avoid holding onto extra references + _geometryResource.reset(); + } finishedLoading(success); }