Fix memory leaks in GenericCAO, ShaderSource and Player classes
parent
3d6d66b181
commit
b8343cd11c
|
@ -670,6 +670,7 @@ GenericCAO::~GenericCAO()
|
||||||
{
|
{
|
||||||
m_env->removePlayerName(m_name.c_str());
|
m_env->removePlayerName(m_name.c_str());
|
||||||
}
|
}
|
||||||
|
removeFromScene(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
core::aabbox3d<f32>* GenericCAO::getSelectionBox()
|
core::aabbox3d<f32>* GenericCAO::getSelectionBox()
|
||||||
|
@ -735,7 +736,7 @@ ClientActiveObject* GenericCAO::getParent()
|
||||||
|
|
||||||
void GenericCAO::removeFromScene(bool permanent)
|
void GenericCAO::removeFromScene(bool permanent)
|
||||||
{
|
{
|
||||||
if(permanent) // Should be true when removing the object permanently and false when refreshing (eg: updating visuals)
|
if((m_env != 0) && (permanent)) // Should be true when removing the object permanently and false when refreshing (eg: updating visuals)
|
||||||
{
|
{
|
||||||
for(std::vector<u16>::iterator ci = m_children.begin();
|
for(std::vector<u16>::iterator ci = m_children.begin();
|
||||||
ci != m_children.end(); ci++)
|
ci != m_children.end(); ci++)
|
||||||
|
|
|
@ -100,6 +100,7 @@ Player::Player(IGameDef *gamedef):
|
||||||
|
|
||||||
Player::~Player()
|
Player::~Player()
|
||||||
{
|
{
|
||||||
|
clearHud();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Horizontal acceleration (X and Z), Y direction is ignored
|
// Horizontal acceleration (X and Z), Y direction is ignored
|
||||||
|
|
|
@ -383,13 +383,16 @@ ShaderSource::ShaderSource(IrrlichtDevice *device):
|
||||||
|
|
||||||
ShaderSource::~ShaderSource()
|
ShaderSource::~ShaderSource()
|
||||||
{
|
{
|
||||||
//m_shader_callback->drop();
|
|
||||||
|
|
||||||
for (std::vector<IShaderConstantSetter*>::iterator iter = m_global_setters.begin();
|
for (std::vector<IShaderConstantSetter*>::iterator iter = m_global_setters.begin();
|
||||||
iter != m_global_setters.end(); iter++) {
|
iter != m_global_setters.end(); iter++) {
|
||||||
delete *iter;
|
delete *iter;
|
||||||
}
|
}
|
||||||
m_global_setters.clear();
|
m_global_setters.clear();
|
||||||
|
|
||||||
|
if (m_shader_callback) {
|
||||||
|
m_shader_callback->drop();
|
||||||
|
m_shader_callback = NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
u32 ShaderSource::getShader(const std::string &name,
|
u32 ShaderSource::getShader(const std::string &name,
|
||||||
|
|
Loading…
Reference in New Issue