FIX: fix crash when cancel a print job
Change-Id: Ic4678ef0d963ae4447506de7aa3cf208173edf72
This commit is contained in:
parent
63c3ea2634
commit
79dd525793
|
@ -1406,11 +1406,26 @@ void SelectMachineDialog::on_ok(wxCommandEvent &event)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << "for send task, current printer id = " << m_printer_last_select << std::endl;
|
BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ", print_job: for send task, current printer id = " << m_printer_last_select << std::endl;
|
||||||
show_status(PrintDialogStatus::PrintStatusSending);
|
show_status(PrintDialogStatus::PrintStatusSending);
|
||||||
|
|
||||||
m_status_bar->reset();
|
m_status_bar->reset();
|
||||||
m_status_bar->set_prog_block();
|
m_status_bar->set_prog_block();
|
||||||
|
m_status_bar->set_cancel_callback_fina([this]() {
|
||||||
|
BOOST_LOG_TRIVIAL(info) << "print_job: enter canceled";
|
||||||
|
if (m_print_job) {
|
||||||
|
if (m_print_job->is_running()) {
|
||||||
|
BOOST_LOG_TRIVIAL(info) << "print_job: canceled";
|
||||||
|
m_print_job->cancel();
|
||||||
|
}
|
||||||
|
m_print_job->join();
|
||||||
|
}
|
||||||
|
wxCommandEvent* event = new wxCommandEvent(EVT_PRINT_JOB_CANCEL);
|
||||||
|
wxQueueEvent(this, event);
|
||||||
|
});
|
||||||
|
|
||||||
|
// enter sending mode
|
||||||
|
sending_mode();
|
||||||
|
|
||||||
// get ams_mapping_result
|
// get ams_mapping_result
|
||||||
std::string ams_mapping_array;
|
std::string ams_mapping_array;
|
||||||
|
@ -1423,14 +1438,14 @@ void SelectMachineDialog::on_ok(wxCommandEvent &event)
|
||||||
m_export_3mf_cancel = cancel = cancelled;
|
m_export_3mf_cancel = cancel = cancelled;
|
||||||
});
|
});
|
||||||
|
|
||||||
if (result < 0) {
|
if (m_export_3mf_cancel) {
|
||||||
wxString msg = _L("Abnormal print file data. Please slice again");
|
m_status_bar->set_status_text(task_canceled_text);
|
||||||
m_status_bar->set_status_text(msg);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_export_3mf_cancel) {
|
if (result < 0) {
|
||||||
m_status_bar->set_status_text(task_canceled_text);
|
wxString msg = _L("Abnormal print file data. Please slice again");
|
||||||
|
m_status_bar->set_status_text(msg);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1468,12 +1483,6 @@ void SelectMachineDialog::on_ok(wxCommandEvent &event)
|
||||||
|
|
||||||
m_print_job->on_success([this]() { finish_mode(); });
|
m_print_job->on_success([this]() { finish_mode(); });
|
||||||
|
|
||||||
m_status_bar->set_cancel_callback_fina([this]() {
|
|
||||||
m_print_job->cancel();
|
|
||||||
wxCommandEvent *event = new wxCommandEvent(EVT_PRINT_JOB_CANCEL);
|
|
||||||
wxQueueEvent(this, event);
|
|
||||||
});
|
|
||||||
|
|
||||||
wxCommandEvent evt(m_plater->get_print_finished_event());
|
wxCommandEvent evt(m_plater->get_print_finished_event());
|
||||||
m_print_job->start();
|
m_print_job->start();
|
||||||
}
|
}
|
||||||
|
@ -1542,8 +1551,9 @@ void SelectMachineDialog::on_set_finish_mapping(wxCommandEvent &evt)
|
||||||
|
|
||||||
void SelectMachineDialog::on_print_job_cancel(wxCommandEvent &evt)
|
void SelectMachineDialog::on_print_job_cancel(wxCommandEvent &evt)
|
||||||
{
|
{
|
||||||
if (m_print_job->is_running()) { m_print_job->join(5 * 1000); }
|
|
||||||
show_status(PrintDialogStatus::PrintStatusSendingCanceled);
|
show_status(PrintDialogStatus::PrintStatusSendingCanceled);
|
||||||
|
// enter prepare mode
|
||||||
|
prepare_mode();
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<std::string> SelectMachineDialog::sort_string(std::vector<std::string> strArray)
|
std::vector<std::string> SelectMachineDialog::sort_string(std::vector<std::string> strArray)
|
||||||
|
|
Loading…
Reference in New Issue