diff --git a/glhr.cpp b/glhr.cpp index 00ea7d6d..ead830ea 100644 --- a/glhr.cpp +++ b/glhr.cpp @@ -230,7 +230,7 @@ EX void projection_multiply(const glmatrix& m) { EX void init(); #if HDR -struct GLprogram : std::enable_shared_from_this { +struct GLprogram { GLuint _program; GLuint vertShader, fragShader; @@ -453,11 +453,11 @@ EX void colorClear(color_t color) { glClearColor(part(color, 3) / 255.0, part(color, 2) / 255.0, part(color, 1) / 255.0, part(color, 0) / 255.0); } -EX void full_enable(GLprogram *p) { +EX void full_enable(shared_ptr p) { auto& cur = current_glprogram; flagtype oldflags = cur ? cur->shader_flags : 0; - if(p == &*cur) return; - cur = p->shared_from_this(); + if(p == cur) return; + cur = p; GLERR("pre_switch_mode"); WITHSHADER({ glUseProgram(cur->_program); diff --git a/shaders.cpp b/shaders.cpp index 1d5e5bae..3a9b7117 100644 --- a/shaders.cpp +++ b/shaders.cpp @@ -276,7 +276,7 @@ void display_data::set_projection(int ed) { matched_programs[id] = selected; } - if(glhr::current_glprogram != selected) full_enable(&*selected); + if(glhr::current_glprogram != selected) full_enable(selected); shader_flags = selected->shader_flags; auto cd = current_display;