Create Stopable job

This commit is contained in:
Filip Sykala 2021-11-24 10:20:37 +01:00
parent 205f8cf86d
commit bba9dab8c8
5 changed files with 198 additions and 157 deletions
src/slic3r/GUI/Gizmos

View file

@ -208,7 +208,7 @@ GLGizmoEmboss::GLGizmoEmboss(GLCanvas3D &parent)
}
GLGizmoEmboss::~GLGizmoEmboss() {}
GLGizmoEmboss::~GLGizmoEmboss() { m_job->stop(); }
void GLGizmoEmboss::set_fine_position()
{
@ -333,6 +333,8 @@ void GLGizmoEmboss::on_set_state()
return;
}
m_volume = nullptr;
m_job->stop();
m_job->join(); // free thread resource
remove_notification_not_valid_font();
} else if (GLGizmoBase::m_state == GLGizmoBase::On) {
if (!m_is_initialized) initialize();
@ -478,7 +480,7 @@ bool GLGizmoEmboss::process()
data->volume_name = create_volume_name();
data->volume_ptr = m_volume;
data->object_idx = m_parent.get_selection().get_object_idx();
m_job->re_run(std::move(data));
m_job->run(std::move(data));
// notification is removed befor object is changed by job
remove_notification_not_valid_font();