From 9a3c831020a3b836f32e3e655efc8a9c9ad1f4dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Hejl?= Date: Tue, 2 Jan 2024 13:19:02 +0100 Subject: [PATCH] SPE-2075: Fixed crash during thumbnail generation for SLA printers. --- src/slic3r/GUI/GLCanvas3D.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 28f55f5b3b..bba3c602fa 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -4905,8 +4905,9 @@ void GLCanvas3D::_render_thumbnail_internal(ThumbnailData& thumbnail_data, const camera.apply_projection(volumes_box, near_z, far_z); - const ModelObjectPtrs &model_objects = GUI::wxGetApp().model().objects; - std::vector extruders_colors = get_extruders_colors(); + const ModelObjectPtrs &model_objects = GUI::wxGetApp().model().objects; + std::vector extruders_colors = get_extruders_colors(); + const bool is_enabled_painted_thumbnail = !model_objects.empty() && !extruders_colors.empty(); if (thumbnail_params.transparent_background) glsafe(::glClearColor(0.0f, 0.0f, 0.0f, 0.0f)); @@ -4921,8 +4922,7 @@ void GLCanvas3D::_render_thumbnail_internal(ThumbnailData& thumbnail_data, const for (GLVolume *vol : visible_volumes) { const int obj_idx = vol->object_idx(); const int vol_idx = vol->volume_idx(); - const bool render_as_painted = (obj_idx >= 0 && vol_idx >= 0) ? - !model_objects[obj_idx]->volumes[vol_idx]->mmu_segmentation_facets.empty() : false; + const bool render_as_painted = is_enabled_painted_thumbnail && obj_idx >= 0 && vol_idx >= 0 && !model_objects[obj_idx]->volumes[vol_idx]->mmu_segmentation_facets.empty(); GLShaderProgram* shader = wxGetApp().get_shader(render_as_painted ? "mm_gouraud" : "gouraud_light"); if (shader == nullptr) continue; @@ -4955,7 +4955,7 @@ void GLCanvas3D::_render_thumbnail_internal(ThumbnailData& thumbnail_data, const glsafe(::glFrontFace(GL_CW)); if (render_as_painted) { - const ModelVolume& model_volume = *model_objects[obj_idx]->volumes[vol_idx]; + const ModelVolume& model_volume = *model_objects[obj_idx]->volumes[vol_idx]; const size_t extruder_idx = get_extruder_color_idx(model_volume, extruders_count); TriangleSelectorMmGui ts(model_volume.mesh(), extruders_colors, extruders_colors[extruder_idx]); ts.deserialize(model_volume.mmu_segmentation_facets.get_data(), true);