When we need to perform a color change on an extruder that isn’t used within the layer, we perform a tool change to select the correct extruder. Then, we perform the color change, and finally, we perform another tool change to switch back to the original extruder.
Reworked handling of approximate / snug bounding boxes
at Model / ModelObject / PrintObject
Further optimized, so that the bounding boxes are not recalculated
unnecesarilly.
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 31fbfa56de70bf8093cea5fe56c73b0e6fa017c3
where the PrintObject shared data invalidation condition was flipped.
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.
* PrintApply: Suppress to apply print when just a physical printer was changed, but printer preset stays the same
* Tab: Layout the buttons bar when switch from the physical printer to printer preset and vice versa
with a large number of modifier meshes:
Bounding box of a chain of modifier meshes overlapping with
an object bounding box was not correctly calculated (bounding boxes
were unioned instead of intersected).
see pull request #7323 for discussion what went wrong.
The original issue
Fix of Print::apply() creating hierarchy of regions for complex scenarios:
Unnecessary regions were created for a modifier over a volume or a modifier,
where the modifier did not modify any of its parent's properties.
This lead to an explosion of regions for this particular 3MF.
Fixes Non Responsive & Memory Leak when opening or changing this 3MF project #7220
After a0ee41770d390efb7c298c397172e1198c85f08d
quite often regions were not re-regenerated. This shoul now be fixed
together with the original slowness & memory leak issue.
Unnecessary regions were created for a modifier over a volume or a modifier,
where the modifier did not modify any of its parent's properties.
This lead to an explosion of regions for this particular 3MF.
Fixes Non Responsive & Memory Leak when opening or changing this 3MF project #7220
of a printer from MMU to non-MMU (when number of extruders changes).
Also slightly optimized in case a MMU-painted object is sliced in
single extruder mode.
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>