From 7a2909b8f1f90b75bd6abc9d2419f3ff8c176cd5 Mon Sep 17 00:00:00 2001 From: alves Date: Wed, 7 Jan 2026 15:43:11 +0800 Subject: [PATCH 1/3] fix thread not check join able and use it may be crash bug. From 20a78cce43be843364258dcad8a646d6c112ce64 Mon Sep 17 00:00:00 2001 From: alves Date: Wed, 7 Jan 2026 16:43:17 +0800 Subject: [PATCH 2/3] fix exit application and check the data is valid.then don't use undefine data. --- src/slic3r/GUI/GLCanvas3D.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 815fce5d5a..abad24d327 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -1330,7 +1330,10 @@ void GLCanvas3D::reset_volumes() m_volumes.clear(); m_dirty = true; - _set_warning_notification(EWarning::ObjectOutside, false); + if (wxGetApp.plater() && wxGetApp().plater()->get_notification_manager()) + { + _set_warning_notification(EWarning::ObjectOutside, false); + } } //BBS: get current plater's bounding box @@ -9695,8 +9698,15 @@ void GLCanvas3D::_set_warning_notification(EWarning warning, bool state) //BBS: this may happened when exit the app, plater is null if (!wxGetApp().plater()) return; + NotificationManager* notification_managerEx = wxGetApp().plater()->get_notification_manager(); auto& notification_manager = *wxGetApp().plater()->get_notification_manager(); + if (!notification_managerEx) + { + BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << boost::format("notification_manager is null"); + return; + } + switch (error) { case PLATER_WARNING: From 1f9d0e4685bd1ef25a2d6ccd77532f143eac7ee5 Mon Sep 17 00:00:00 2001 From: alves Date: Wed, 7 Jan 2026 19:01:55 +0800 Subject: [PATCH 3/3] fix build error bug --- src/slic3r/GUI/GLCanvas3D.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index abad24d327..a78ff2d68f 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -1330,7 +1330,9 @@ void GLCanvas3D::reset_volumes() m_volumes.clear(); m_dirty = true; - if (wxGetApp.plater() && wxGetApp().plater()->get_notification_manager()) + auto pLater = wxGetApp().plater(); + + if (pLater && wxGetApp().plater()->get_notification_manager()) { _set_warning_notification(EWarning::ObjectOutside, false); }