trying another solution

This commit is contained in:
Dante Ruiz 2018-01-30 10:23:19 -08:00
parent bed2ea052d
commit 4c0a173287

View file

@ -65,7 +65,7 @@ public:
EntityTree::EntityTree(bool shouldReaverage) : EntityTree::EntityTree(bool shouldReaverage) :
Octree(shouldReaverage), _needsParentFixupLock(QReadWriteLock::Recursive) Octree(shouldReaverage)
{ {
resetClientEditStats(); resetClientEditStats();
@ -1682,10 +1682,14 @@ void EntityTree::entityChanged(EntityItemPointer entity) {
void EntityTree::fixupNeedsParentFixups() { void EntityTree::fixupNeedsParentFixups() {
PROFILE_RANGE(simulation_physics, "FixupParents"); PROFILE_RANGE(simulation_physics, "FixupParents");
MovingEntitiesOperator moveOperator; MovingEntitiesOperator moveOperator;
QVector<EntityItemWeakPointer> entitiesToFixup;
{
QWriteLocker locker(&_needsParentFixupLock); QWriteLocker locker(&_needsParentFixupLock);
entitiesToFixup = _needsParentFixup;
_needsParentFixup.clear();
}
QMutableVectorIterator<EntityItemWeakPointer> iter(_needsParentFixup); QMutableVectorIterator<EntityItemWeakPointer> iter(entitiesToFixup);
while (iter.hasNext()) { while (iter.hasNext()) {
EntityItemWeakPointer entityWP = iter.next(); EntityItemWeakPointer entityWP = iter.next();
EntityItemPointer entity = entityWP.lock(); EntityItemPointer entity = entityWP.lock();
@ -1748,6 +1752,12 @@ void EntityTree::fixupNeedsParentFixups() {
PerformanceTimer perfTimer("recurseTreeWithOperator"); PerformanceTimer perfTimer("recurseTreeWithOperator");
recurseTreeWithOperator(&moveOperator); recurseTreeWithOperator(&moveOperator);
} }
{
QWriteLocker locker(&_needsParentFixupLock);
// add back the entities that did not get fixup
_needsParentFixup.append(entitiesToFixup);
}
} }
void EntityTree::deleteDescendantsOfAvatar(QUuid avatarID) { void EntityTree::deleteDescendantsOfAvatar(QUuid avatarID) {