Skip to content

Commit f1e8aa3

Browse files
committed
Fix #2466 - Studio Groom: Groomed meshes not always reloading after groom run
The cache was being cleared after set_display_mode() was called in handle_groom_complete(). However, set_display_mode() emits an update_view_mode() signal which triggers update_display(), causing mesh lookups to hit the stale cache before it was cleared. This resulted in an alternating pattern where groomed meshes would only reload on every other groom run. Move handle_clear_cache() to before set_display_mode() so the cache is cleared before any display updates are triggered.
1 parent b588b72 commit f1e8aa3

File tree

2 files changed

+4
-3
lines changed

2 files changed

+4
-3
lines changed

Libs/Analyze/MeshGenerator.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,6 @@ MeshHandle MeshGenerator::build_mesh_from_image(ImageType::Pointer image, float
135135

136136
//---------------------------------------------------------------------------
137137
MeshHandle MeshGenerator::build_mesh_from_file(std::string filename, float iso_value) {
138-
// std::cerr << "build_mesh from " << filename << "\n";
139138
MeshHandle mesh(new StudioMesh);
140139

141140
if (!QFileInfo(QString::fromStdString(filename)).exists()) {

Studio/Interface/ShapeWorksStudioApp.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1335,15 +1335,17 @@ void ShapeWorksStudioApp::handle_groom_start() {
13351335
void ShapeWorksStudioApp::handle_groom_complete() {
13361336
update_view_combo();
13371337

1338+
// Clear cache BEFORE setting display mode, because set_display_mode triggers
1339+
// update_view_mode() which calls update_display() and would use stale cached meshes
1340+
session_->handle_clear_cache();
1341+
13381342
if (!session_->groomed_present()) {
13391343
// grooming may have failed, if so, we don't want to switch to groomed that don't exist
13401344
session_->set_display_mode(DisplayMode::Original);
13411345
} else {
13421346
session_->set_display_mode(DisplayMode::Groomed);
13431347
}
13441348

1345-
session_->handle_clear_cache();
1346-
13471349
update_display(true);
13481350
visualizer_->reset_camera();
13491351
enable_possible_actions();

0 commit comments

Comments
 (0)