X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Frender%2Fprogramdata.cpp;h=401ed18949af2ff09ec7b826b5c36627854e4201;hb=f2e54dc47d0ddba2b1ca582e8c8feb64ccfcb270;hp=5f124a907fc8eebbb034d25cddb5ba475c67c022;hpb=7aaec9a70b8d7733429bec043f8e33e02956f266;p=libs%2Fgl.git diff --git a/source/render/programdata.cpp b/source/render/programdata.cpp index 5f124a90..401ed189 100644 --- a/source/render/programdata.cpp +++ b/source/render/programdata.cpp @@ -45,7 +45,7 @@ ProgramData::ProgramData(const ProgramData &other, const Program *p): if(tied_program) { for(vector::const_iterator i=other.uniforms.begin(); i!=other.uniforms.end(); ++i) - tied_program->get_uniform_info(i->name); + validate_name(i->name); } uniforms = other.uniforms; @@ -79,7 +79,7 @@ ProgramData::~ProgramData() for(BlockMap::iterator i=blocks.begin(); i!=blocks.end(); ++i) { if(i->second.indices.type_flag==0xFE) - delete i->second.indices.dynamic.values; + delete[] i->second.indices.dynamic.values; delete i->second.block; } delete buffer; @@ -611,7 +611,7 @@ void ProgramData::apply() const dirty = 0; } - const Program::UniformBlockMap &prog_blocks = prog->get_uniform_blocks(); + const vector &prog_blocks = prog->get_uniform_blocks(); UniformBlock *old_last_block = last_block; if(pu.dirty==ALL_ONES) @@ -622,29 +622,29 @@ void ProgramData::apply() const pu.blocks.reserve(prog_blocks.size()); pu.used = 0; - for(Program::UniformBlockMap::const_iterator i=prog_blocks.begin(); i!=prog_blocks.end(); ++i) + for(vector::const_iterator i=prog_blocks.begin(); i!=prog_blocks.end(); ++i) { - SharedBlock *shared = get_shared_block(i->second); + SharedBlock *shared = get_shared_block(*i); if(shared) { if(shared->dirty==ALL_ONES) - update_block_uniform_indices(*shared, i->second); + update_block_uniform_indices(*shared, *i); pu.used |= shared->used; } - pu.blocks.push_back(ProgramBlock(i->second.bind_point, shared)); + pu.blocks.push_back(ProgramBlock(i->bind_point, shared)); } } // Update the contents of all dirty blocks. bool buffered_blocks_updated = false; std::vector::iterator j = pu.blocks.begin(); - for(Program::UniformBlockMap::const_iterator i=prog_blocks.begin(); i!=prog_blocks.end(); ++i, ++j) + for(vector::const_iterator i=prog_blocks.begin(); i!=prog_blocks.end(); ++i, ++j) { if(!j->shared || !j->shared->dirty) continue; - update_block(*j->shared, i->second); + update_block(*j->shared, *i); j->shared->dirty = 0; buffered_blocks_updated |= (j->bind_point>=0); }