diff options
Diffstat (limited to 'source/blender/blenkernel/intern/geometry_set.cc')
-rw-r--r-- | source/blender/blenkernel/intern/geometry_set.cc | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/source/blender/blenkernel/intern/geometry_set.cc b/source/blender/blenkernel/intern/geometry_set.cc index fc758e12c70..2bd8b643899 100644 --- a/source/blender/blenkernel/intern/geometry_set.cc +++ b/source/blender/blenkernel/intern/geometry_set.cc @@ -548,8 +548,14 @@ void GeometrySet::modify_geometry_sets(ForeachSubGeometryCallback callback) { Vector<GeometrySet *> geometry_sets; gather_mutable_geometry_sets(*this, geometry_sets); - blender::threading::parallel_for_each( - geometry_sets, [&](GeometrySet *geometry_set) { callback(*geometry_set); }); + if (geometry_sets.size() == 1) { + /* Avoid possible overhead and a large call stack when multithreading is pointless. */ + callback(*geometry_sets.first()); + } + else { + blender::threading::parallel_for_each( + geometry_sets, [&](GeometrySet *geometry_set) { callback(*geometry_set); }); + } } /** \} */ |