diff options
Diffstat (limited to 'PhysX_3.4/Source/LowLevelAABB/src/BpSimpleAABBManager.cpp')
| -rw-r--r-- | PhysX_3.4/Source/LowLevelAABB/src/BpSimpleAABBManager.cpp | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/PhysX_3.4/Source/LowLevelAABB/src/BpSimpleAABBManager.cpp b/PhysX_3.4/Source/LowLevelAABB/src/BpSimpleAABBManager.cpp index 2e0bc7e0..298f3f00 100644 --- a/PhysX_3.4/Source/LowLevelAABB/src/BpSimpleAABBManager.cpp +++ b/PhysX_3.4/Source/LowLevelAABB/src/BpSimpleAABBManager.cpp @@ -2767,6 +2767,9 @@ static void processAggregatePairsParallel(AggPairMap& map, SimpleAABBManager& ma ProcessAggPairsParallelTask* task = PX_PLACEMENT_NEW(flushPool.allocate(sizeof(ProcessAggPairsParallelTask)), ProcessAggPairsParallelTask)(0, &manager.mMapLock, &manager, &map, taskName); + + PxU32 startIdx = pairTasks.size(); + for (AggPairMap::Iterator iter = map.getIterator(); !iter.done(); ++iter) { task->mAggPairs[task->mNbPairs] = iter->first; @@ -2775,7 +2778,6 @@ static void processAggregatePairsParallel(AggPairMap& map, SimpleAABBManager& ma { pairTasks.pushBack(task); task->setContinuation(continuation); - task->removeReference(); //task->runInternal(); task = PX_PLACEMENT_NEW(flushPool.allocate(sizeof(ProcessAggPairsParallelTask)), ProcessAggPairsParallelTask)(0, &manager.mMapLock, &manager, &map, taskName); } @@ -2783,6 +2785,12 @@ static void processAggregatePairsParallel(AggPairMap& map, SimpleAABBManager& ma manager.mMapLock.unlock(); + for (PxU32 i = startIdx; i < pairTasks.size(); ++i) + { + pairTasks[i]->removeReference(); + } + + if (task->mNbPairs) { pairTasks.pushBack(task); |