mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-07-22 14:13:57 -06:00
Fix of a crash when using active_step_add_warning on PrintObjects
PrintObjectBase::status_update_warnings called PrintBase::status_update_warnings, which in turn set SlicingStatus flag to UPDATE_PRINT_STEP_WARNINGS (instead of UPDATE_PRINT_OBEJCT_STEP_WARNINGS) and saved its own ObjectID. This led to spurious and hard to read thread-unsafe crashes.
This commit is contained in:
parent
a53de51b22
commit
19cfeb1a78
2 changed files with 10 additions and 8 deletions
|
@ -94,12 +94,14 @@ std::string PrintBase::output_filepath(const std::string &path, const std::strin
|
|||
return path;
|
||||
}
|
||||
|
||||
void PrintBase::status_update_warnings(ObjectID object_id, int step, PrintStateBase::WarningLevel /* warning_level */, const std::string &message)
|
||||
void PrintBase::status_update_warnings(int step, PrintStateBase::WarningLevel /* warning_level */, const std::string &message, const PrintObjectBase* print_object)
|
||||
{
|
||||
if (this->m_status_callback)
|
||||
m_status_callback(SlicingStatus(*this, step));
|
||||
if (this->m_status_callback) {
|
||||
auto status = print_object ? SlicingStatus(*print_object, step) : SlicingStatus(*this, step);
|
||||
m_status_callback(status);
|
||||
}
|
||||
else if (! message.empty())
|
||||
printf("%s warning: %s\n", (object_id == this->id()) ? "print" : "print object", message.c_str());
|
||||
printf("%s warning: %s\n", print_object ? "print_object" : "print", message.c_str());
|
||||
}
|
||||
|
||||
tbb::mutex& PrintObjectBase::state_mutex(PrintBase *print)
|
||||
|
@ -114,7 +116,7 @@ std::function<void()> PrintObjectBase::cancel_callback(PrintBase *print)
|
|||
|
||||
void PrintObjectBase::status_update_warnings(PrintBase *print, int step, PrintStateBase::WarningLevel warning_level, const std::string &message)
|
||||
{
|
||||
print->status_update_warnings(this->id(), step, warning_level, message);
|
||||
print->status_update_warnings(step, warning_level, message, this);
|
||||
}
|
||||
|
||||
} // namespace Slic3r
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue