{num_objects} - number of printable objects on the plater.
{num_instances} - number of printable instances on the plater, adding up
all printable instances of all objects.
Implements #2735#3339#4607
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.
Errors in the file output templates are reported in mono-spaced font,
so that the arrow character ^ is displayed at the right column
pointing to the offending spot.
1) All slicer's exceptions are now derived from Slic3r::Exception.
2) New exceptions are defined for slicing errors.
3) Exceptions are propagated to the Plater to show.
It remains to modify the slicing back-end to throw the new SlicingError
exceptions instead of std::runtime_error and to show the other exceptions
by a message dialog instead of a notification.
for FDM, and "[input_filename_base].sl1" for the SLA technology.
This improves the situation of
"Filename creation with variables broken"
https://github.com/prusa3d/PrusaSlicer/issues/1918
where anything after the last dot in the file name is considered
as an extension, therefore the .gcode resp. .sl1 extension is not added.
Now the user gets the output_filename_format filled in with the correct
extension.
Also now if the output_filename_format is empty, the output name
is generated anyway.
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.