From fe79514b08eeeef0333abdefe7da8b058c342632 Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Fri, 30 Jun 2017 10:22:16 -0700 Subject: [PATCH] lock when changing EntityTree elements --- libraries/entities/src/EntityTree.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/libraries/entities/src/EntityTree.cpp b/libraries/entities/src/EntityTree.cpp index 5cb47d7a1e..26dc678347 100644 --- a/libraries/entities/src/EntityTree.cpp +++ b/libraries/entities/src/EntityTree.cpp @@ -90,16 +90,17 @@ void EntityTree::eraseAllOctreeElements(bool createNewRoot) { if (_simulation) { _simulation->clearEntities(); } - { - QWriteLocker locker(&_entityMapLock); - foreach(EntityItemPointer entity, _entityMap) { + QHash localMap; + localMap.swap(_entityMap); + this->withWriteLock([&] { + foreach(EntityItemPointer entity, localMap) { EntityTreeElementPointer element = entity->getElement(); if (element) { element->cleanupEntities(); } } - _entityMap.clear(); - } + }); + localMap.clear(); Octree::eraseAllOctreeElements(createNewRoot); resetClientEditStats();