1
0
forked from 0ad/0ad

Fix memory leaks in the new model code.

This was SVN commit r3063.
This commit is contained in:
prefect 2005-10-30 21:31:10 +00:00
parent f2b88d7792
commit be44dc842e
2 changed files with 5 additions and 3 deletions

View File

@ -63,6 +63,7 @@ void CModel::ReleaseData()
delete[] m_BoneMatrices;
delete[] m_InvTranspBoneMatrices;
for (size_t i=0;i<m_Props.size();i++) {
m_Props[i].m_Model->m_Parent = 0;
delete m_Props[i].m_Model;
}
m_Props.clear();
@ -433,6 +434,7 @@ void CModel::RemoveProp(SPropPoint* point)
for (Iter iter=m_Props.begin();iter!=m_Props.end();++iter) {
const Prop& prop=*iter;
if (prop.m_Point==point) {
prop.m_Model->m_Parent = 0;
delete prop.m_Model;
m_Props.erase(iter);
return;

View File

@ -246,11 +246,11 @@ struct BMRModelDefTracker : public CModelDefRPrivate
: m_ModelDef(mdef), m_Next(0), m_Slots(0) { }
/// Back-link to the CModelDef object
CModelDefPtr m_ModelDef;
boost::weak_ptr<CModelDef> m_ModelDef;
/// Pointer to the next ModelDefTracker that has submitted models.
BMRModelDefTracker* m_Next;
/// Number of slots used in m_ModelSlots
uint m_Slots;
@ -431,7 +431,7 @@ void BatchModelRenderer::RenderAllModels(u32 flags)
for(BMRModelDefTracker* mdeftracker = m->submissions; mdeftracker; mdeftracker = mdeftracker->m_Next)
{
PrepareModelDef(mdeftracker->m_ModelDef);
PrepareModelDef(mdeftracker->m_ModelDef.lock());
for(uint idx = 0; idx < mdeftracker->m_Slots; ++idx)
{