Skip to content

Commit

Permalink
Delay deleting replaced textures (m_texture_trash)
Browse files Browse the repository at this point in the history
  • Loading branch information
kahrl committed Jun 3, 2013
1 parent 9fe74a3 commit b89c79e
Showing 1 changed file with 15 additions and 1 deletion.
16 changes: 15 additions & 1 deletion src/tile.cpp
Expand Up @@ -440,6 +440,10 @@ class TextureSource : public IWritableTextureSource

// Queued texture fetches (to be processed by the main thread)
RequestQueue<std::string, u32, u8, u8> m_get_texture_queue;

// Textures that have been overwritten with other ones
// but can't be deleted because the ITexture* might still be used
std::list<video::ITexture*> m_texture_trash;
};

IWritableTextureSource* createTextureSource(IrrlichtDevice *device)
Expand Down Expand Up @@ -485,6 +489,16 @@ TextureSource::~TextureSource()
}
m_atlaspointer_cache.clear();

for (std::list<video::ITexture*>::iterator iter =
m_texture_trash.begin(); iter != m_texture_trash.end();
iter++)
{
video::ITexture *t = *iter;

//cleanup trashed texture
driver->removeTexture(t);
}

infostream << "~TextureSource() "<< textures_before << "/"
<< driver->getTextureCount() << std::endl;
}
Expand Down Expand Up @@ -870,7 +884,7 @@ void TextureSource::rebuildImagesAndTextures()
sap->intsize = img->getDimension();

if (t_old != 0)
driver->removeTexture(t_old);
m_texture_trash.push_back(t_old);
}
}

Expand Down

0 comments on commit b89c79e

Please sign in to comment.