Commit: 700c2c823ac7da8a53f56f3e6d2a6951bd4d05cf Author: Jacques Lucke Date: Thu Jun 27 16:21:29 2019 +0200 Branches: functions https://developer.blender.org/rB700c2c823ac7da8a53f56f3e6d2a6951bd4d05cf
keep track of newly allocated blocks =================================================================== M source/blender/simulations/bparticles/core.cpp M source/blender/simulations/bparticles/core.hpp =================================================================== diff --git a/source/blender/simulations/bparticles/core.cpp b/source/blender/simulations/bparticles/core.cpp index 848f0dcb3c3..0ff727bc4a6 100644 --- a/source/blender/simulations/bparticles/core.cpp +++ b/source/blender/simulations/bparticles/core.cpp @@ -45,20 +45,21 @@ ParticlesBlock &BlockAllocator::get_non_full_block(uint particle_type_id) ParticlesContainer &container = m_state.particle_container(particle_type_id); uint index = 0; - while (index < m_block_cache.size()) { - if (m_block_cache[index]->inactive_amount() == 0) { - m_block_cache.remove_and_reorder(index); + while (index < m_non_full_cache.size()) { + if (m_non_full_cache[index]->inactive_amount() == 0) { + m_non_full_cache.remove_and_reorder(index); continue; } - if (m_block_cache[index]->container() == container) { - return *m_block_cache[index]; + if (m_non_full_cache[index]->container() == container) { + return *m_non_full_cache[index]; } index++; } ParticlesBlock &block = container.new_block(); - m_block_cache.append(&block); + m_non_full_cache.append(&block); + m_allocated_blocks.append(&block); return block; } diff --git a/source/blender/simulations/bparticles/core.hpp b/source/blender/simulations/bparticles/core.hpp index b1d3ff15452..2e784ae9cc6 100644 --- a/source/blender/simulations/bparticles/core.hpp +++ b/source/blender/simulations/bparticles/core.hpp @@ -56,7 +56,8 @@ class ParticlesState { class BlockAllocator { private: ParticlesState &m_state; - SmallVector<ParticlesBlock *> m_block_cache; + SmallVector<ParticlesBlock *> m_non_full_cache; + SmallVector<ParticlesBlock *> m_allocated_blocks; public: BlockAllocator(ParticlesState &state); @@ -67,6 +68,11 @@ class BlockAllocator { { return m_state; } + + ArrayRef<ParticlesBlock *> allocated_blocks() + { + return m_allocated_blocks; + } }; class EmitTarget { _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs