Fixed an issue with background processing cancelation & SLA supports
for a single object only. Fixed a spelling issue in "call_cancell_xxx"
This commit is contained in:
parent
b84eb48bff
commit
76f1aa09d0
4 changed files with 12 additions and 11 deletions
|
@ -717,7 +717,7 @@ Print::ApplyStatus Print::apply(const Model &model, const DynamicPrintConfig &co
|
||||||
if (model.id() != m_model.id()) {
|
if (model.id() != m_model.id()) {
|
||||||
// Kill everything, initialize from scratch.
|
// Kill everything, initialize from scratch.
|
||||||
// Stop background processing.
|
// Stop background processing.
|
||||||
this->call_cancell_callback();
|
this->call_cancel_callback();
|
||||||
update_apply_status(this->invalidate_all_steps());
|
update_apply_status(this->invalidate_all_steps());
|
||||||
for (PrintObject *object : m_objects) {
|
for (PrintObject *object : m_objects) {
|
||||||
model_object_status.emplace(object->model_object()->id(), ModelObjectStatus::Deleted);
|
model_object_status.emplace(object->model_object()->id(), ModelObjectStatus::Deleted);
|
||||||
|
@ -749,7 +749,7 @@ Print::ApplyStatus Print::apply(const Model &model, const DynamicPrintConfig &co
|
||||||
} else {
|
} else {
|
||||||
// Reorder the objects, add new objects.
|
// Reorder the objects, add new objects.
|
||||||
// First stop background processing before shuffling or deleting the PrintObjects in the object list.
|
// First stop background processing before shuffling or deleting the PrintObjects in the object list.
|
||||||
this->call_cancell_callback();
|
this->call_cancel_callback();
|
||||||
update_apply_status(this->invalidate_step(psGCodeExport));
|
update_apply_status(this->invalidate_step(psGCodeExport));
|
||||||
// Second create a new list of objects.
|
// Second create a new list of objects.
|
||||||
std::vector<ModelObject*> model_objects_old(std::move(m_model.objects));
|
std::vector<ModelObject*> model_objects_old(std::move(m_model.objects));
|
||||||
|
@ -859,7 +859,7 @@ Print::ApplyStatus Print::apply(const Model &model, const DynamicPrintConfig &co
|
||||||
model_object.assign_copy(model_object_new);
|
model_object.assign_copy(model_object_new);
|
||||||
} else if (support_blockers_differ || support_enforcers_differ) {
|
} else if (support_blockers_differ || support_enforcers_differ) {
|
||||||
// First stop background processing before shuffling or deleting the ModelVolumes in the ModelObject's list.
|
// First stop background processing before shuffling or deleting the ModelVolumes in the ModelObject's list.
|
||||||
this->call_cancell_callback();
|
this->call_cancel_callback();
|
||||||
update_apply_status(false);
|
update_apply_status(false);
|
||||||
// Invalidate just the supports step.
|
// Invalidate just the supports step.
|
||||||
auto range = print_object_status.equal_range(PrintObjectStatus(model_object.id()));
|
auto range = print_object_status.equal_range(PrintObjectStatus(model_object.id()));
|
||||||
|
@ -960,7 +960,7 @@ Print::ApplyStatus Print::apply(const Model &model, const DynamicPrintConfig &co
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (m_objects != print_objects_new) {
|
if (m_objects != print_objects_new) {
|
||||||
this->call_cancell_callback();
|
this->call_cancel_callback();
|
||||||
update_apply_status(this->invalidate_all_steps());
|
update_apply_status(this->invalidate_all_steps());
|
||||||
m_objects = print_objects_new;
|
m_objects = print_objects_new;
|
||||||
// Delete the PrintObjects marked as Unknown or Deleted.
|
// Delete the PrintObjects marked as Unknown or Deleted.
|
||||||
|
|
|
@ -326,7 +326,7 @@ protected:
|
||||||
|
|
||||||
tbb::mutex& state_mutex() const { return m_state_mutex; }
|
tbb::mutex& state_mutex() const { return m_state_mutex; }
|
||||||
std::function<void()> cancel_callback() { return m_cancel_callback; }
|
std::function<void()> cancel_callback() { return m_cancel_callback; }
|
||||||
void call_cancell_callback() { m_cancel_callback(); }
|
void call_cancel_callback() { m_cancel_callback(); }
|
||||||
|
|
||||||
// If the background processing stop was requested, throw CanceledException.
|
// If the background processing stop was requested, throw CanceledException.
|
||||||
// To be called by the worker thread and its sub-threads (mostly launched on the TBB thread pool) regularly.
|
// To be called by the worker thread and its sub-threads (mostly launched on the TBB thread pool) regularly.
|
||||||
|
|
|
@ -182,7 +182,7 @@ SLAPrint::ApplyStatus SLAPrint::apply(const Model &model, const DynamicPrintConf
|
||||||
if (model.id() != m_model.id()) {
|
if (model.id() != m_model.id()) {
|
||||||
// Kill everything, initialize from scratch.
|
// Kill everything, initialize from scratch.
|
||||||
// Stop background processing.
|
// Stop background processing.
|
||||||
this->call_cancell_callback();
|
this->call_cancel_callback();
|
||||||
update_apply_status(this->invalidate_all_steps());
|
update_apply_status(this->invalidate_all_steps());
|
||||||
for (SLAPrintObject *object : m_objects) {
|
for (SLAPrintObject *object : m_objects) {
|
||||||
model_object_status.emplace(object->model_object()->id(), ModelObjectStatus::Deleted);
|
model_object_status.emplace(object->model_object()->id(), ModelObjectStatus::Deleted);
|
||||||
|
@ -211,7 +211,7 @@ SLAPrint::ApplyStatus SLAPrint::apply(const Model &model, const DynamicPrintConf
|
||||||
} else {
|
} else {
|
||||||
// Reorder the objects, add new objects.
|
// Reorder the objects, add new objects.
|
||||||
// First stop background processing before shuffling or deleting the PrintObjects in the object list.
|
// First stop background processing before shuffling or deleting the PrintObjects in the object list.
|
||||||
this->call_cancell_callback();
|
this->call_cancel_callback();
|
||||||
update_apply_status(this->invalidate_step(slapsRasterize));
|
update_apply_status(this->invalidate_step(slapsRasterize));
|
||||||
// Second create a new list of objects.
|
// Second create a new list of objects.
|
||||||
std::vector<ModelObject*> model_objects_old(std::move(m_model.objects));
|
std::vector<ModelObject*> model_objects_old(std::move(m_model.objects));
|
||||||
|
@ -380,7 +380,7 @@ SLAPrint::ApplyStatus SLAPrint::apply(const Model &model, const DynamicPrintConf
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_objects != print_objects_new) {
|
if (m_objects != print_objects_new) {
|
||||||
this->call_cancell_callback();
|
this->call_cancel_callback();
|
||||||
update_apply_status(this->invalidate_all_steps());
|
update_apply_status(this->invalidate_all_steps());
|
||||||
m_objects = print_objects_new;
|
m_objects = print_objects_new;
|
||||||
// Delete the PrintObjects marked as Unknown or Deleted.
|
// Delete the PrintObjects marked as Unknown or Deleted.
|
||||||
|
@ -436,7 +436,7 @@ void SLAPrint::set_task(const TaskParams ¶ms)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!running)
|
if (!running)
|
||||||
this->cancel_callback();
|
this->call_cancel_callback();
|
||||||
|
|
||||||
// Now the background process is either stopped, or it is inside one of the print object steps to be calculated anyway.
|
// Now the background process is either stopped, or it is inside one of the print object steps to be calculated anyway.
|
||||||
if (params.single_model_instance_only) {
|
if (params.single_model_instance_only) {
|
||||||
|
|
|
@ -2036,8 +2036,9 @@ unsigned int Plater::priv::update_background_process(bool force_validation)
|
||||||
//background_process.is_export_scheduled() - byl zavolan "Export G-code", background processing ma jmeno export souboru
|
//background_process.is_export_scheduled() - byl zavolan "Export G-code", background processing ma jmeno export souboru
|
||||||
//background_process.is_upload_scheduled() - byl zavolan "Send to OctoPrint", jeste nebylo doslajsovano (pak se preda upload fronte a background process zapomene)
|
//background_process.is_upload_scheduled() - byl zavolan "Send to OctoPrint", jeste nebylo doslajsovano (pak se preda upload fronte a background process zapomene)
|
||||||
//background_process.empty() - prazdna plocha
|
//background_process.empty() - prazdna plocha
|
||||||
// pokud (invalidated != Print::APPLY_STATUS_UNCHANGED) a ! background_process.empty() -> je neco ke slajsovani (povol tlacitko)
|
// pokud (return_state & UPDATE_BACKGROUND_PROCESS_INVALID) != 0 -> doslo k chybe (gray out "Slice now") mozna "Invalid data"???
|
||||||
// pokud (return_state & UPDATE_BACKGROUND_PROCESS_INVALID) != 0 -> doslo k chybe (gray out "Slice now")
|
// jinak background_process.running() -> Zobraz "Slicing ..."
|
||||||
|
// jinak pokud ! background_process.empty() && ! background_process.finished() -> je neco ke slajsovani (povol tlacitko) "Slice Now"
|
||||||
|
|
||||||
return return_state;
|
return return_state;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue