Fix of "Slicer crashes when slicing for flexible filament" #2988
This commit is contained in:
parent
0b9b74e35e
commit
6fcd51d5be
1 changed files with 5 additions and 2 deletions
|
@ -2296,12 +2296,12 @@ static void reserve_new_volume_finalize_old_volume(GLVolume& vol_new, GLVolume&
|
||||||
|
|
||||||
static void load_gcode_retractions(const GCodePreviewData::Retraction& retractions, GLCanvas3D::GCodePreviewVolumeIndex::EType extrusion_type, GLVolumeCollection &volumes, GLCanvas3D::GCodePreviewVolumeIndex &volume_index, bool gl_initialized)
|
static void load_gcode_retractions(const GCodePreviewData::Retraction& retractions, GLCanvas3D::GCodePreviewVolumeIndex::EType extrusion_type, GLVolumeCollection &volumes, GLCanvas3D::GCodePreviewVolumeIndex &volume_index, bool gl_initialized)
|
||||||
{
|
{
|
||||||
volume_index.first_volumes.emplace_back(extrusion_type, 0, (unsigned int)volumes.volumes.size());
|
|
||||||
|
|
||||||
// nothing to render, return
|
// nothing to render, return
|
||||||
if (retractions.positions.empty())
|
if (retractions.positions.empty())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
volume_index.first_volumes.emplace_back(extrusion_type, 0, (unsigned int)volumes.volumes.size());
|
||||||
|
|
||||||
GLVolume *volume = volumes.new_nontoolpath_volume(retractions.color.rgba, VERTEX_BUFFER_RESERVE_SIZE);
|
GLVolume *volume = volumes.new_nontoolpath_volume(retractions.color.rgba, VERTEX_BUFFER_RESERVE_SIZE);
|
||||||
|
|
||||||
GCodePreviewData::Retraction::PositionsList copy(retractions.positions);
|
GCodePreviewData::Retraction::PositionsList copy(retractions.positions);
|
||||||
|
@ -2367,6 +2367,9 @@ void GLCanvas3D::load_gcode_preview(const GCodePreviewData& preview_data, const
|
||||||
++ idx_volume_index_src;
|
++ idx_volume_index_src;
|
||||||
idx_volume_of_this_type_last = (idx_volume_index_src + 1 == m_gcode_preview_volume_index.first_volumes.size()) ? m_volumes.volumes.size() : m_gcode_preview_volume_index.first_volumes[idx_volume_index_src + 1].id;
|
idx_volume_of_this_type_last = (idx_volume_index_src + 1 == m_gcode_preview_volume_index.first_volumes.size()) ? m_volumes.volumes.size() : m_gcode_preview_volume_index.first_volumes[idx_volume_index_src + 1].id;
|
||||||
idx_volume_of_this_type_first_new = idx_volume_dst;
|
idx_volume_of_this_type_first_new = idx_volume_dst;
|
||||||
|
if (idx_volume_src == idx_volume_of_this_type_last)
|
||||||
|
// Empty sequence of volumes for the current index item.
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
if (! m_volumes.volumes[idx_volume_src]->print_zs.empty())
|
if (! m_volumes.volumes[idx_volume_src]->print_zs.empty())
|
||||||
m_volumes.volumes[idx_volume_dst ++] = m_volumes.volumes[idx_volume_src];
|
m_volumes.volumes[idx_volume_dst ++] = m_volumes.volumes[idx_volume_src];
|
||||||
|
|
Loading…
Reference in a new issue