Skip to content

Commit bd0e60e

Browse files
committed
fix mutex version
1 parent b8b7f63 commit bd0e60e

File tree

1 file changed

+30
-12
lines changed

1 file changed

+30
-12
lines changed

Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/autorefinement.h

Lines changed: 30 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1490,23 +1490,41 @@ bool autorefine_triangle_soup(PointRange& soup_points,
14901490
[&](const tbb::blocked_range<size_t>& r) {
14911491
for (size_t ti = r.begin(); ti != r.end(); ++ti) {
14921492
const std::array<EK::Point_3, 3>& t = new_triangles[ti].first;
1493-
visitor.new_subtriangle(offset+ti, tri_inter_ids_inverse[new_triangles[ti].second]);
14941493
triangle_buffer[ti] = CGAL::make_array(concurrent_get_point_id(t[0]), concurrent_get_point_id(t[1]), concurrent_get_point_id(t[2]));
14951494
}
14961495
}
14971496
);
1498-
tbb::parallel_for(tbb::blocked_range<size_t>(0, new_triangles.size()),
1499-
[&](const tbb::blocked_range<size_t>& r) {
1500-
for (size_t ti = r.begin(); ti != r.end(); ++ti)
1501-
{
1502-
soup_triangles_out[offset + ti] =
1503-
{ triangle_buffer[ti][0]->second,
1504-
triangle_buffer[ti][1]->second,
1505-
triangle_buffer[ti][2]->second };
1506-
visitor.new_subtriangle(soup_triangles_out[offset + ti], soup_triangle[tri_inter_ids_inverse[new_triangles[ti].second]]);
1497+
1498+
// The constexpr was initially inside the lambda, but that did not compile with VC 2017
1499+
if constexpr(std::is_same_v<Visitor, Wrap_snap_visitor>){
1500+
tbb::parallel_for(tbb::blocked_range<size_t>(0, new_triangles.size()),
1501+
[&](const tbb::blocked_range<size_t>& r) {
1502+
for (size_t ti = r.begin(); ti != r.end(); ++ti)
1503+
{
1504+
soup_triangles_out[offset + ti] =
1505+
{ triangle_buffer[ti][0]->second,
1506+
triangle_buffer[ti][1]->second,
1507+
triangle_buffer[ti][2]->second };
1508+
visitor.new_subdivision(soup_triangles_out[offset + ti], soup_triangles[tri_inter_ids_inverse[new_triangles[ti].second]]);
1509+
}
15071510
}
1508-
}
1509-
);
1511+
);
1512+
}
1513+
else
1514+
{
1515+
tbb::parallel_for(tbb::blocked_range<size_t>(0, new_triangles.size()),
1516+
[&](const tbb::blocked_range<size_t>& r) {
1517+
for (size_t ti = r.begin(); ti != r.end(); ++ti)
1518+
{
1519+
soup_triangles_out[offset + ti] =
1520+
{ triangle_buffer[ti][0]->second,
1521+
triangle_buffer[ti][1]->second,
1522+
triangle_buffer[ti][2]->second };
1523+
visitor.new_subtriangle(offset+ti, tri_inter_ids_inverse[new_triangles[ti].second]);
1524+
}
1525+
}
1526+
);
1527+
}
15101528
#else
15111529
//option 2 (without mutex)
15121530
/// Lambda concurrent_get_point_id()

0 commit comments

Comments
 (0)