diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 234e3d597a..e23e3172ac 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -5915,7 +5915,7 @@ void Application::resetPhysicsReadyInformation() { _gpuTextureMemSizeStabilityCount = 0; _gpuTextureMemSizeAtLastCheck = 0; _physicsEnabled = false; - _octreeProcessor.startEntitySequence(); + _octreeProcessor.startSafeLanding(); } diff --git a/interface/src/octree/OctreePacketProcessor.cpp b/interface/src/octree/OctreePacketProcessor.cpp index 6b07e6717c..544c56c802 100644 --- a/interface/src/octree/OctreePacketProcessor.cpp +++ b/interface/src/octree/OctreePacketProcessor.cpp @@ -133,6 +133,6 @@ void OctreePacketProcessor::processPacket(QSharedPointer messag } } -void OctreePacketProcessor::startEntitySequence() { +void OctreePacketProcessor::startSafeLanding() { _safeLanding->startEntitySequence(qApp->getEntities()); } diff --git a/interface/src/octree/OctreePacketProcessor.h b/interface/src/octree/OctreePacketProcessor.h index d6ffb942e6..7f906eab99 100644 --- a/interface/src/octree/OctreePacketProcessor.h +++ b/interface/src/octree/OctreePacketProcessor.h @@ -25,7 +25,7 @@ public: OctreePacketProcessor(); ~OctreePacketProcessor(); - void startEntitySequence(); + void startSafeLanding(); bool isLoadSequenceComplete() const { return _safeLanding->isLoadSequenceComplete(); } float domainLoadingProgress() const { return _safeLanding->loadingProgressPercentage(); } diff --git a/interface/src/octree/SafeLanding.cpp b/interface/src/octree/SafeLanding.cpp index 573933a408..e4a2156aff 100644 --- a/interface/src/octree/SafeLanding.cpp +++ b/interface/src/octree/SafeLanding.cpp @@ -57,17 +57,6 @@ void SafeLanding::startEntitySequence(QSharedPointer entityT } } -void SafeLanding::stopEntitySequence() { - Locker lock(_lock); - _trackingEntities = false; - _maxTrackedEntityCount = 0; - _trackedEntityStabilityCount = 0; - _initialStart = INVALID_SEQUENCE; - _initialEnd = INVALID_SEQUENCE; - _trackedEntities.clear(); - _sequenceNumbers.clear(); -} - void SafeLanding::addTrackedEntity(const EntityItemID& entityID) { if (_trackingEntities && _entityTreeRenderer) { Locker lock(_lock); @@ -109,24 +98,26 @@ void SafeLanding::noteReceivedsequenceNumber(int sequenceNumber) { bool SafeLanding::isLoadSequenceComplete() { if ((isEntityLoadingComplete() && isSequenceNumbersComplete()) || qApp->failedToConnectToEntityServer()) { - _trackingEntities = false; + stopTracking(); + } + return !_trackingEntities; +} - Locker lock(_lock); - if (_entityTreeRenderer) { - auto entityTree = _entityTreeRenderer->getTree(); - disconnect(std::const_pointer_cast(entityTree).get(), - &EntityTree::addingEntity, this, &SafeLanding::addTrackedEntity); - disconnect(std::const_pointer_cast(entityTree).get(), - &EntityTree::deletingEntity, this, &SafeLanding::deleteTrackedEntity); - _entityTreeRenderer.reset(); - } - - _initialStart = INVALID_SEQUENCE; - _initialEnd = INVALID_SEQUENCE; - EntityTreeRenderer::setEntityLoadingPriorityFunction(StandardPriority); +void SafeLanding::stopTracking() { + Locker lock(_lock); + _trackingEntities = false; + if (_entityTreeRenderer) { + auto entityTree = _entityTreeRenderer->getTree(); + disconnect(std::const_pointer_cast(entityTree).get(), + &EntityTree::addingEntity, this, &SafeLanding::addTrackedEntity); + disconnect(std::const_pointer_cast(entityTree).get(), + &EntityTree::deletingEntity, this, &SafeLanding::deleteTrackedEntity); + _entityTreeRenderer.reset(); } - return !_trackingEntities; + _initialStart = INVALID_SEQUENCE; + _initialEnd = INVALID_SEQUENCE; + EntityTreeRenderer::setEntityLoadingPriorityFunction(StandardPriority); } float SafeLanding::loadingProgressPercentage() { diff --git a/interface/src/octree/SafeLanding.h b/interface/src/octree/SafeLanding.h index 428ca15bdc..f88282ba5e 100644 --- a/interface/src/octree/SafeLanding.h +++ b/interface/src/octree/SafeLanding.h @@ -26,7 +26,6 @@ class EntityItemID; class SafeLanding : public QObject { public: void startEntitySequence(QSharedPointer entityTreeRenderer); - void stopEntitySequence(); void setCompletionSequenceNumbers(int first, int last); // 'last' exclusive. void noteReceivedsequenceNumber(int sequenceNumber); bool isLoadSequenceComplete(); @@ -41,6 +40,7 @@ private: bool isEntityPhysicsReady(const EntityItemPointer& entity); void debugDumpSequenceIDs() const; bool isEntityLoadingComplete(); + void stopTracking(); std::mutex _lock; using Locker = std::lock_guard;