diff --git a/src/slic3r/GUI/Jobs/BoostThreadWorker.cpp b/src/slic3r/GUI/Jobs/BoostThreadWorker.cpp index 3d0cdb678f..21455e103a 100644 --- a/src/slic3r/GUI/Jobs/BoostThreadWorker.cpp +++ b/src/slic3r/GUI/Jobs/BoostThreadWorker.cpp @@ -94,9 +94,9 @@ constexpr int ABORT_WAIT_MAX_MS = 10000; BoostThreadWorker::~BoostThreadWorker() { - replace_job(*this, nullptr); - try { + cancel_all(); + m_input_queue.push(JobEntry{nullptr}); join(ABORT_WAIT_MAX_MS); } catch(...) { BOOST_LOG_TRIVIAL(error) @@ -130,8 +130,10 @@ void BoostThreadWorker::process_events() bool BoostThreadWorker::start_next(std::unique_ptr job) { - m_input_queue.push(JobEntry{std::move(job)}); - return true; + if (job) + m_input_queue.push(JobEntry{std::move(job)}); + + return bool{job}; } }} // namespace Slic3r::GUI