Fixed memory leak in GLCanvas3D::_load_print_object_toolpaths() and GLCanvas3D::_load_wipe_tower_toolpaths().
This commit is contained in:
parent
26b28699f1
commit
4387436525
@ -6367,10 +6367,14 @@ void GLCanvas3D::_load_print_object_toolpaths(const PrintObject& print_object, c
|
|||||||
|
|
||||||
BOOST_LOG_TRIVIAL(debug) << "Loading print object toolpaths in parallel - finalizing results" << m_volumes.log_memory_info() << log_memory_info();
|
BOOST_LOG_TRIVIAL(debug) << "Loading print object toolpaths in parallel - finalizing results" << m_volumes.log_memory_info() << log_memory_info();
|
||||||
// Remove empty volumes from the newly added volumes.
|
// Remove empty volumes from the newly added volumes.
|
||||||
m_volumes.volumes.erase(
|
{
|
||||||
std::remove_if(m_volumes.volumes.begin() + volumes_cnt_initial, m_volumes.volumes.end(),
|
for (auto ptr_it = m_volumes.volumes.begin() + volumes_cnt_initial; ptr_it != m_volumes.volumes.end(); ++ptr_it)
|
||||||
[](const GLVolume *volume) { return volume->empty(); }),
|
if ((*ptr_it)->empty()) {
|
||||||
m_volumes.volumes.end());
|
delete *ptr_it;
|
||||||
|
*ptr_it = nullptr;
|
||||||
|
}
|
||||||
|
m_volumes.volumes.erase(std::remove(m_volumes.volumes.begin() + volumes_cnt_initial, m_volumes.volumes.end(), nullptr), m_volumes.volumes.end());
|
||||||
|
}
|
||||||
for (size_t i = volumes_cnt_initial; i < m_volumes.volumes.size(); ++i) {
|
for (size_t i = volumes_cnt_initial; i < m_volumes.volumes.size(); ++i) {
|
||||||
GLVolume* v = m_volumes.volumes[i];
|
GLVolume* v = m_volumes.volumes[i];
|
||||||
v->is_outside = ! build_volume.all_paths_inside_vertices_and_normals_interleaved(v->indexed_vertex_array.vertices_and_normals_interleaved, v->indexed_vertex_array.bounding_box());
|
v->is_outside = ! build_volume.all_paths_inside_vertices_and_normals_interleaved(v->indexed_vertex_array.vertices_and_normals_interleaved, v->indexed_vertex_array.bounding_box());
|
||||||
@ -6528,10 +6532,14 @@ void GLCanvas3D::_load_wipe_tower_toolpaths(const BuildVolume& build_volume, con
|
|||||||
|
|
||||||
BOOST_LOG_TRIVIAL(debug) << "Loading wipe tower toolpaths in parallel - finalizing results" << m_volumes.log_memory_info() << log_memory_info();
|
BOOST_LOG_TRIVIAL(debug) << "Loading wipe tower toolpaths in parallel - finalizing results" << m_volumes.log_memory_info() << log_memory_info();
|
||||||
// Remove empty volumes from the newly added volumes.
|
// Remove empty volumes from the newly added volumes.
|
||||||
m_volumes.volumes.erase(
|
{
|
||||||
std::remove_if(m_volumes.volumes.begin() + volumes_cnt_initial, m_volumes.volumes.end(),
|
for (auto ptr_it = m_volumes.volumes.begin() + volumes_cnt_initial; ptr_it != m_volumes.volumes.end(); ++ptr_it)
|
||||||
[](const GLVolume *volume) { return volume->empty(); }),
|
if ((*ptr_it)->empty()) {
|
||||||
m_volumes.volumes.end());
|
delete *ptr_it;
|
||||||
|
*ptr_it = nullptr;
|
||||||
|
}
|
||||||
|
m_volumes.volumes.erase(std::remove(m_volumes.volumes.begin() + volumes_cnt_initial, m_volumes.volumes.end(), nullptr), m_volumes.volumes.end());
|
||||||
|
}
|
||||||
for (size_t i = volumes_cnt_initial; i < m_volumes.volumes.size(); ++i) {
|
for (size_t i = volumes_cnt_initial; i < m_volumes.volumes.size(); ++i) {
|
||||||
GLVolume* v = m_volumes.volumes[i];
|
GLVolume* v = m_volumes.volumes[i];
|
||||||
v->is_outside = ! build_volume.all_paths_inside_vertices_and_normals_interleaved(v->indexed_vertex_array.vertices_and_normals_interleaved, v->indexed_vertex_array.bounding_box());
|
v->is_outside = ! build_volume.all_paths_inside_vertices_and_normals_interleaved(v->indexed_vertex_array.vertices_and_normals_interleaved, v->indexed_vertex_array.bounding_box());
|
||||||
|
Loading…
Reference in New Issue
Block a user