Fix ui hanging while slicing

- It was caused by improperly setting m_print to fff_print.
This commit is contained in:
Martin Šach 2024-12-06 17:15:08 +01:00 committed by Lukas Matena
parent 9bdd59afea
commit 59e4a5aba6
2 changed files with 6 additions and 2 deletions

View File

@ -89,8 +89,8 @@ public:
~BackgroundSlicingProcess();
void set_temp_output_path(int bed_idx);
void set_fff_print(Print* print) { if (m_fff_print != print) stop(); m_fff_print = print; m_print = dynamic_cast<PrintBase*>(print); }
void set_sla_print(SLAPrint *print) { if (m_sla_print != print) stop(); m_sla_print = print; m_print = dynamic_cast<PrintBase*>(print); }
void set_fff_print(Print* print) { if (m_fff_print != print) stop(); m_fff_print = print; }
void set_sla_print(SLAPrint *print) { if (m_sla_print != print) stop(); m_sla_print = print; }
void set_thumbnail_cb(ThumbnailsGeneratorCallback cb) { m_thumbnail_cb = cb; }
void set_gcode_result(GCodeProcessorResult* result) { m_gcode_result = result; }

View File

@ -6578,9 +6578,12 @@ void Plater::connect_gcode_all() {
Print *original_print{&active_fff_print()};
const int original_bed{s_multiple_beds.get_active_bed()};
PrinterTechnology original_technology{this->printer_technology()};
ScopeGuard guard{[&](){
this->p->background_process.set_fff_print(original_print);
s_multiple_beds.set_active_bed(original_bed);
this->p->background_process.select_technology(original_technology);
}};
for (std::size_t print_index{0}; print_index < this->get_fff_prints().size(); ++print_index) {
@ -6590,6 +6593,7 @@ void Plater::connect_gcode_all() {
}
this->p->background_process.set_fff_print(print.get());
this->p->background_process.set_temp_output_path(print_index);
this->p->background_process.select_technology(this->p->printer_technology);
PrintHostJob upload_job;
upload_job.upload_data = upload_job_template.upload_data;