diff --git a/src/slic3r/GUI/GCodeViewer.cpp b/src/slic3r/GUI/GCodeViewer.cpp index e21ba7f00..f744bb6e8 100644 --- a/src/slic3r/GUI/GCodeViewer.cpp +++ b/src/slic3r/GUI/GCodeViewer.cpp @@ -434,10 +434,26 @@ void GCodeViewer::reset() void GCodeViewer::render() const { + auto init_gl_data = [this]() { + static bool first_run = true; + if (first_run) { + m_sequential_view.marker.init(); + + std::array point_sizes; + ::glGetIntegerv(GL_ALIASED_POINT_SIZE_RANGE, point_sizes.data()); + m_detected_point_sizes = { static_cast(point_sizes[0]), static_cast(point_sizes[1]) }; + first_run = false; + } + }; + #if ENABLE_GCODE_VIEWER_STATISTICS m_statistics.reset_opengl(); #endif // ENABLE_GCODE_VIEWER_STATISTICS + // OpenGL data must be initialized after the glContext has been created. + // This is ensured when this method is called by GLCanvas3D::_render_gcode(). + init_gl_data(); + if (m_roles.empty()) return; @@ -893,13 +909,8 @@ void GCodeViewer::init() } set_toolpath_move_type_visible(EMoveType::Extrude, true); - m_sequential_view.marker.init(); // m_sequential_view.skip_invisible_moves = true; - std::array point_sizes; - ::glGetIntegerv(GL_ALIASED_POINT_SIZE_RANGE, point_sizes.data()); - m_detected_point_sizes = { static_cast(point_sizes[0]), static_cast(point_sizes[1]) }; - m_initialized = true; } diff --git a/src/slic3r/GUI/GCodeViewer.hpp b/src/slic3r/GUI/GCodeViewer.hpp index 4ae5cf2dd..1cf538584 100644 --- a/src/slic3r/GUI/GCodeViewer.hpp +++ b/src/slic3r/GUI/GCodeViewer.hpp @@ -410,7 +410,7 @@ private: #if ENABLE_GCODE_VIEWER_STATISTICS mutable Statistics m_statistics; #endif // ENABLE_GCODE_VIEWER_STATISTICS - std::array m_detected_point_sizes = { 0.0f, 0.0f }; + mutable std::array m_detected_point_sizes = { 0.0f, 0.0f }; public: GCodeViewer() = default; diff --git a/src/slic3r/GUI/OpenGLManager.cpp b/src/slic3r/GUI/OpenGLManager.cpp index 13c58f847..4f1e00793 100644 --- a/src/slic3r/GUI/OpenGLManager.cpp +++ b/src/slic3r/GUI/OpenGLManager.cpp @@ -234,10 +234,8 @@ OpenGLManager::~OpenGLManager() bool OpenGLManager::init_gl() { - if (!m_gl_initialized) - { - if (glewInit() != GLEW_OK) - { + if (!m_gl_initialized) { + if (glewInit() != GLEW_OK) { BOOST_LOG_TRIVIAL(error) << "Unable to init glew library"; return false; }