Skip to content

Commit 07fa1cf

Browse files
committed
fix multi thread
1 parent 325f346 commit 07fa1cf

File tree

2 files changed

+19
-10
lines changed

2 files changed

+19
-10
lines changed

include/geode/inspector/criterion/internal/component_meshes_degeneration.hpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,7 @@ namespace geode
7373
[[nodiscard]] const Model& model() const;
7474

7575
private:
76-
void enable_edges_on_surface(
77-
const Surface< Model::dim >& surface ) const;
76+
std::vector< uuid > surfaces_on_which_enable_edges() const;
7877

7978
private:
8079
const Model& model_;

src/geode/inspector/criterion/internal/component_meshes_degeneration.cpp

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -88,11 +88,16 @@ namespace geode
8888
async::task< std::pair< uuid, InspectionIssues< index_t > > > >
8989
surface_tasks;
9090
surface_tasks.reserve( model_.nb_surfaces() );
91+
const auto surfaces_to_enable = surfaces_on_which_enable_edges();
9192
for( const auto& surface : model_.surfaces() )
9293
{
93-
surface_tasks.emplace_back( async::spawn( [this, &threshold,
94+
surface_tasks.emplace_back( async::spawn( [&surfaces_to_enable,
95+
&threshold,
9496
&surface] {
95-
this->enable_edges_on_surface( surface );
97+
if( absl::c_contains( surfaces_to_enable, surface.id() ) )
98+
{
99+
surface.mesh().enable_edges();
100+
}
96101
const geode::SurfaceMeshDegeneration< Model::dim >
97102
inspector{ surface.mesh() };
98103
auto issues = inspector.small_edges( threshold );
@@ -163,15 +168,20 @@ namespace geode
163168
}
164169

165170
template < typename Model >
166-
void ComponentMeshesDegeneration< Model >::enable_edges_on_surface(
167-
const Surface< Model::dim >& surface ) const
171+
std::vector< uuid > ComponentMeshesDegeneration<
172+
Model >::surfaces_on_which_enable_edges() const
168173
{
169-
const auto& mesh = surface.mesh();
170-
if( !mesh.are_edges_enabled() )
174+
std::vector< uuid > result;
175+
for( const auto& surface : model_.surfaces() )
171176
{
172-
mesh.enable_edges();
173-
enabled_edges_surfaces_.emplace( surface.id() );
177+
const auto& mesh = surface.mesh();
178+
if( !mesh.are_edges_enabled() )
179+
{
180+
result.emplace_back( surface.id() );
181+
enabled_edges_surfaces_.emplace( surface.id() );
182+
}
174183
}
184+
return result;
175185
}
176186

177187
template class opengeode_inspector_inspector_api

0 commit comments

Comments
 (0)