mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-10-30 20:21:12 -06:00 
			
		
		
		
	#5098 - Fixed no preview after language change
This commit is contained in:
		
							parent
							
								
									2618992c8b
								
							
						
					
					
						commit
						a72fb79f72
					
				
					 2 changed files with 37 additions and 39 deletions
				
			
		|  | @ -412,6 +412,9 @@ void GCodeViewer::refresh(const GCodeProcessor::Result& gcode_result, const std: | |||
| 
 | ||||
| void GCodeViewer::reset() | ||||
| { | ||||
|     m_initialized = false; | ||||
|     m_gl_data_initialized = false; | ||||
| 
 | ||||
|     m_moves_count = 0; | ||||
|     for (TBuffer& buffer : m_buffers) { | ||||
|         buffer.reset(); | ||||
|  | @ -439,46 +442,39 @@ void GCodeViewer::reset() | |||
| void GCodeViewer::render() const | ||||
| { | ||||
|     auto init_gl_data = [this]() { | ||||
|         static bool first_run = true; | ||||
|         if (first_run) { | ||||
|             // initializes opengl data of TBuffers
 | ||||
|             for (size_t i = 0; i < m_buffers.size(); ++i) { | ||||
|                 TBuffer& buffer = m_buffers[i]; | ||||
|                 switch (buffer_type(i)) | ||||
|                 { | ||||
|                 default: { break; } | ||||
|                 case EMoveType::Tool_change: | ||||
|                 case EMoveType::Color_change: | ||||
|                 case EMoveType::Pause_Print: | ||||
|                 case EMoveType::Custom_GCode: | ||||
|                 case EMoveType::Retract: | ||||
|                 case EMoveType::Unretract: | ||||
|                 { | ||||
|                     buffer.shader = wxGetApp().is_glsl_version_greater_or_equal_to(1, 20) ? "options_120" : "options_110"; | ||||
|                     break; | ||||
|                 } | ||||
|                 case EMoveType::Extrude: | ||||
|                 { | ||||
|                     buffer.shader = "gouraud_light"; | ||||
|                     break; | ||||
|                 } | ||||
|                 case EMoveType::Travel: | ||||
|                 { | ||||
|                     buffer.shader = "toolpaths_lines"; | ||||
|                     break; | ||||
|                 } | ||||
|                 } | ||||
|         // initializes opengl data of TBuffers
 | ||||
|         for (size_t i = 0; i < m_buffers.size(); ++i) { | ||||
|             TBuffer& buffer = m_buffers[i]; | ||||
|             switch (buffer_type(i)) { | ||||
|             default: { break; } | ||||
|             case EMoveType::Tool_change: | ||||
|             case EMoveType::Color_change: | ||||
|             case EMoveType::Pause_Print: | ||||
|             case EMoveType::Custom_GCode: | ||||
|             case EMoveType::Retract: | ||||
|             case EMoveType::Unretract: { | ||||
|                 buffer.shader = wxGetApp().is_glsl_version_greater_or_equal_to(1, 20) ? "options_120" : "options_110"; | ||||
|                 break; | ||||
|             } | ||||
|             case EMoveType::Extrude: { | ||||
|                 buffer.shader = "gouraud_light"; | ||||
|                 break; | ||||
|             } | ||||
|             case EMoveType::Travel: { | ||||
|                 buffer.shader = "toolpaths_lines"; | ||||
|                 break; | ||||
|             } | ||||
|             } | ||||
| 
 | ||||
|             // initializes tool marker
 | ||||
|             m_sequential_view.marker.init(); | ||||
| 
 | ||||
|             // initializes point sizes
 | ||||
|             std::array<int, 2> point_sizes; | ||||
|             ::glGetIntegerv(GL_ALIASED_POINT_SIZE_RANGE, point_sizes.data()); | ||||
|             m_detected_point_sizes = { static_cast<float>(point_sizes[0]), static_cast<float>(point_sizes[1]) }; | ||||
|             first_run = false; | ||||
|         } | ||||
| 
 | ||||
|         // initializes tool marker
 | ||||
|         m_sequential_view.marker.init(); | ||||
| 
 | ||||
|         // initializes point sizes
 | ||||
|         std::array<int, 2> point_sizes; | ||||
|         ::glGetIntegerv(GL_ALIASED_POINT_SIZE_RANGE, point_sizes.data()); | ||||
|         m_detected_point_sizes = { static_cast<float>(point_sizes[0]), static_cast<float>(point_sizes[1]) }; | ||||
|         m_gl_data_initialized = true; | ||||
|     }; | ||||
| 
 | ||||
| #if ENABLE_GCODE_VIEWER_STATISTICS | ||||
|  | @ -487,7 +483,8 @@ void GCodeViewer::render() const | |||
| 
 | ||||
|     // 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_gl_data_initialized) | ||||
|         init_gl_data(); | ||||
| 
 | ||||
|     if (m_roles.empty()) | ||||
|         return; | ||||
|  |  | |||
|  | @ -388,6 +388,7 @@ public: | |||
| 
 | ||||
| private: | ||||
|     bool m_initialized{ false }; | ||||
|     mutable bool m_gl_data_initialized{ false }; | ||||
|     unsigned int m_last_result_id{ 0 }; | ||||
|     size_t m_moves_count{ 0 }; | ||||
|     mutable std::vector<TBuffer> m_buffers{ static_cast<size_t>(EMoveType::Extrude) }; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 enricoturri1966
						enricoturri1966