X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Frenderpass.cpp;h=de5ac07f8f6bcf34356eab49bb693c6c26d3ecde;hb=8e9d872c2ba8dc633d29a673ba93adf38d262a5c;hp=b0289284033f4935066db0aafdcb07638dc9c2f2;hpb=9846a5c6e73b3a146084894a11550dbbf184a22a;p=libs%2Fgl.git diff --git a/source/renderpass.cpp b/source/renderpass.cpp index b0289284..de5ac07f 100644 --- a/source/renderpass.cpp +++ b/source/renderpass.cpp @@ -32,10 +32,16 @@ RenderPass::RenderPass(const RenderPass &other): RenderPass::~RenderPass() { - delete shdata; delete texturing; } +void RenderPass::set_shader_program(const Program *prog, const ProgramData *data) +{ + shprog = prog; + shdata = data; + shdata.keep(); +} + void RenderPass::set_material(const Material *mat) { material = mat; @@ -112,9 +118,9 @@ void RenderPass::Loader::uniforms() { if(!obj.shprog) throw invalid_operation("RenderPass::Loader::uniforms"); - if(!obj.shdata) - obj.shdata = new ProgramData; - load_sub(*obj.shdata); + RefPtr shd = new ProgramData; + load_sub(*shd); + obj.shdata = shd; }