From 2f0cde9e9e7c5e92f2c10e36997e5cc93c1ee61a Mon Sep 17 00:00:00 2001 From: PavelMikus Date: Tue, 17 Jan 2023 12:04:02 +0100 Subject: [PATCH 1/5] make exception_ptr static --- src/libslic3r/PrintConfig.cpp | 3 ++- src/slic3r/GUI/BackgroundSlicingProcess.cpp | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 1c2947099..c8e0ae270 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -841,7 +841,8 @@ void PrintConfigDef::init_fff_params() def = this->add("extra_perimeters_on_overhangs", coBool); def->label = L("Extra perimeters on overhangs (Experimental)"); def->category = L("Layers and Perimeters"); - def->tooltip = L("Create additional perimeter paths over steep overhangs and areas where bridges cannot be anchored."); + def->tooltip = L("Detect overhang areas where bridges cannot be anchored, and fill them with " + "extra perimeter paths. These paths are anchored to the nearby non-overhang area when possible."); def->mode = comExpert; def->set_default_value(new ConfigOptionBool(false)); diff --git a/src/slic3r/GUI/BackgroundSlicingProcess.cpp b/src/slic3r/GUI/BackgroundSlicingProcess.cpp index 678761924..31fb0ba55 100644 --- a/src/slic3r/GUI/BackgroundSlicingProcess.cpp +++ b/src/slic3r/GUI/BackgroundSlicingProcess.cpp @@ -235,7 +235,7 @@ void BackgroundSlicingProcess::thread_proc() // Process the background slicing task. m_state = STATE_RUNNING; lck.unlock(); - std::exception_ptr exception; + static std::exception_ptr exception; #ifdef _WIN32 this->call_process_seh_throw(exception); #else From 363618beb823b6dce3668045cd0d733c9b950770 Mon Sep 17 00:00:00 2001 From: PavelMikus Date: Tue, 17 Jan 2023 13:30:04 +0100 Subject: [PATCH 2/5] Linux crash fixes --- src/slic3r/GUI/BackgroundSlicingProcess.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/slic3r/GUI/BackgroundSlicingProcess.cpp b/src/slic3r/GUI/BackgroundSlicingProcess.cpp index 31fb0ba55..678761924 100644 --- a/src/slic3r/GUI/BackgroundSlicingProcess.cpp +++ b/src/slic3r/GUI/BackgroundSlicingProcess.cpp @@ -235,7 +235,7 @@ void BackgroundSlicingProcess::thread_proc() // Process the background slicing task. m_state = STATE_RUNNING; lck.unlock(); - static std::exception_ptr exception; + std::exception_ptr exception; #ifdef _WIN32 this->call_process_seh_throw(exception); #else From 823eb1a2510febcde89e61fd5f60ddfacd7ec171 Mon Sep 17 00:00:00 2001 From: PavelMikus Date: Tue, 17 Jan 2023 14:05:09 +0100 Subject: [PATCH 3/5] disable dynamic overhang speed by default. We can enable them only in our profiles, and it is risky to set speed for unknown printers --- src/libslic3r/PrintConfig.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index c8e0ae270..bc6d81b2d 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -534,7 +534,7 @@ void PrintConfigDef::init_fff_params() def->category = L("Speed"); def->tooltip = L("This setting enables dynamic speed control on overhangs."); def->mode = comAdvanced; - def->set_default_value(new ConfigOptionBool(true)); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("overhang_overlap_levels", coPercents); def->full_label = L("Overhang overlap levels"); From ee5f4f8573fd553a7a5685f90ccf246d1c6eea4c Mon Sep 17 00:00:00 2001 From: PavelMikus Date: Tue, 17 Jan 2023 16:23:01 +0100 Subject: [PATCH 4/5] fix FDM supports autogenerate button sometimes not working correctly --- src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp | 14 ++++---------- src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.hpp | 1 - 2 files changed, 4 insertions(+), 11 deletions(-) diff --git a/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp b/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp index 9b06e5340..6e12527d5 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp @@ -517,14 +517,6 @@ bool GLGizmoFdmSupports::has_backend_supports() return done; } -void GLGizmoFdmSupports::reslice_FDM_supports(bool postpone_error_messages) const { - wxGetApp().CallAfter( - [this, postpone_error_messages]() { - wxGetApp().plater()->reslice_FFF_until_step(posSupportSpotsSearch, - *m_c->selection_info()->model_object(), postpone_error_messages); - }); -} - void GLGizmoFdmSupports::auto_generate() { ModelObject *mo = m_c->selection_info()->model_object(); @@ -549,8 +541,10 @@ void GLGizmoFdmSupports::auto_generate() } } - this->waiting_for_autogenerated_supports = true; - wxGetApp().CallAfter([this]() { reslice_FDM_supports(); }); + wxGetApp().CallAfter([this]() { + wxGetApp().plater()->reslice_FFF_until_step(posSupportSpotsSearch, *m_c->selection_info()->model_object(), false); + this->waiting_for_autogenerated_supports = true; + }); } } diff --git a/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.hpp b/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.hpp index fb20181d8..b79e1dda7 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.hpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.hpp @@ -44,7 +44,6 @@ private: bool waiting_for_autogenerated_supports = false; bool has_backend_supports(); - void reslice_FDM_supports(bool postpone_error_messages = false) const; void auto_generate(); void apply_data_from_backend(); }; From 88d1718a5af543472fc19ed666ba982daa41ec96 Mon Sep 17 00:00:00 2001 From: PavelMikus Date: Tue, 17 Jan 2023 16:45:39 +0100 Subject: [PATCH 5/5] revisit SupportSpotSearch step invalidation and fix issues --- src/libslic3r/PrintApply.cpp | 1 - src/libslic3r/PrintObject.cpp | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/libslic3r/PrintApply.cpp b/src/libslic3r/PrintApply.cpp index 4f586a17c..cc0a790d3 100644 --- a/src/libslic3r/PrintApply.cpp +++ b/src/libslic3r/PrintApply.cpp @@ -1201,7 +1201,6 @@ Print::ApplyStatus Print::apply(const Model &model, DynamicPrintConfig new_full_ } // Invalidate just the supports step. for (const PrintObjectStatus &print_object_status : print_objects_range) { - update_apply_status(print_object_status.print_object->invalidate_step(posSupportSpotsSearch)); update_apply_status(print_object_status.print_object->invalidate_step(posSupportMaterial)); } if (supports_differ) { diff --git a/src/libslic3r/PrintObject.cpp b/src/libslic3r/PrintObject.cpp index 42bb6bf31..abbf0fb93 100644 --- a/src/libslic3r/PrintObject.cpp +++ b/src/libslic3r/PrintObject.cpp @@ -789,10 +789,10 @@ bool PrintObject::invalidate_step(PrintObjectStep step) // propagate to dependent steps if (step == posPerimeters) { - invalidated |= this->invalidate_steps({ posPrepareInfill, posInfill, posIroning, posEstimateCurledExtrusions }); + invalidated |= this->invalidate_steps({ posPrepareInfill, posInfill, posIroning, posSupportSpotsSearch, posEstimateCurledExtrusions }); invalidated |= m_print->invalidate_steps({ psSkirtBrim }); } else if (step == posPrepareInfill) { - invalidated |= this->invalidate_steps({ posInfill, posIroning }); + invalidated |= this->invalidate_steps({ posInfill, posIroning, posSupportSpotsSearch }); } else if (step == posInfill) { invalidated |= this->invalidate_steps({ posIroning, posSupportSpotsSearch }); invalidated |= m_print->invalidate_steps({ psSkirtBrim });