with canceled / invalidated states.
Print / PrintObject infrastructure was extended with a cleanup()
callback, which may check for the new State::Canceled / State::Invalid
states of a particular milestone and turn it to State::Fresh
while releasing data of that particular milestone which is no more valid.
Also fixed a bug in 31fbfa56de
where the PrintObject shared data invalidation condition was flipped.
- Put AnyPtr into separate header, it deserves one
- Add means to handle shared pointers inside AnyPtr
- Use shared pointers in sla csg collection for meshes not owned by Model
- Add method to get the last completed step in PrintObjectBase
- Make SLAPrintObject::get_parts_to_slice() safe to call from UI thread against background thread activity.
WIP: Invalidating shared support spots in Print::apply()
The background slicing background was modified to call Print::cleanup()
any time any data of any print step or print object step could become
invalid. Cleaning up such invalid data will reduce memory footprint.
Generalized the "enabled milestone" from SLA
to both SLA and FFF.
Merged the "milestone enabled" flag into the milestone status.
Fixed some potential threading issues in SLAPrint::finalize()
when resetting the "milestone enabled" flags.
Quite some time ago, many of the TBB components were deprecated in favor
of their near-equivalents in the STL or, in the case of task_scheduler_init,
were broken up and reconstituted under a less ad-hoc logic. Every time a header
file marked deprecated gets included, a rather loud warning is emitted, which
leads to a complete TBB's domination over the stderr stream during build time,
making it harder to notice _legitimate_ warnings.
Instead of merely muting the output with TBB_SUPPRESS_DEPRECATED_MESSAGES,
perform a genuine migration away from the deprecated components with the added
benefit of achieving a source compatibility with oneTBB, the successor to TBB
which has dropped the deprecated API for good.
What got replaced for what?
| Deprecated | Replacement |
| ------------------------------------- | --------------------------------------------- |
| `tbb::atomic` | `std::atomic` |
| `tbb::mutex` | `std::mutex` |
| `tbb::mutex::scoped_lock` | `std::scoped_lock<std::mutex>` |
| `tbb::mutex::scoped_lock` (empty) | `std::unique_lock<std::mutex>` (deferred) |
| `tbb::task_scheduler_init` | `tbb::global_control` |
| `tbb::this_thread` | `std::this_thread` |
Signed-off-by: Roman Beranek <roman.beranek@prusa3d.com>
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.
on application start-up, at least not on Windows.
wxEVT_CREATE was called for some control deep in the Plater, however
the event was delivered to the main frame and only for slicer, not
for G-code viewer. Thus the callbacks for 3D Mouse were not registered
for and the 3D mouse did not work on Windows.
Fixed by calling the callback registration from the first execution
of the Idle function.
There was a bug in unit tests that led to generating the wipe tower with non-normalized preset.
This caused out-of-bounds access into max_layer_height vector in fill_wipe_tower_partitions.
The problem surfaced in https://github.com/prusa3d/PrusaSlicer/issues/2288.
I quickly patched additional normalization of the preset to prevent this from happening.
Also, an assert in the same function turned out to trip on one of the tests.
This one was commented out for now and will (hopefully) be looked into later.
Function Print::apply_config was renamed to apply_config_perl_tests_only so everyone
sees its current purpose and does not mistake it for the more important Print::apply.
just the selected object.
Added "Host upload active" check on background processing state.
Documented requirements on "update_background_process" to
control the upcoming single "Slice Now" / "Export" button.
from the current Model/ModelObjects.
Fixed a possible race condition in updating Print::m_placeholder_parser
with the proposed filename / filename base.
Improved documentation (source code comments).
template.
Reworked naming of the plater exports to not use the output file name
template, but to derive the file name from the first printable object's name.
Fixed error handling: Reimpemented the Perl's "eval" blocks
as try / catch blocks.