Remove textures with no references

This commit is contained in:
Flamefire committed 2014-09-13 17:58:59 +02:00
1 parent 7f8e974fe1
commit 37aa8e5219
3 files changed
+15 -2

No files matched your search

+3 -1
View File
@@ -177,7 +177,9 @@ namespace Vocaluxe.Base
public static void RemoveTexture(ref CTextureRef texture)
{
_Draw.RemoveTexture(ref texture);
// Disposed textures call this, possibly at program end!
if (_Draw != null)
_Draw.RemoveTexture(ref texture);
}
public static void DrawTexture(CTextureRef texture)
+1
View File
@@ -383,6 +383,7 @@ namespace Vocaluxe.Lib.Draw
_Textures.Remove(texture.ID);
}
}
texture.ID = -1;
texture = null;
}
+11 -1
View File
@@ -24,7 +24,7 @@ namespace VocaluxeLib.Draw
/// </summary>
public class CTextureRef
{
public readonly int ID;
public int ID;
public string TexturePath = "";
@@ -115,6 +115,16 @@ namespace VocaluxeLib.Draw
_CalcRatios();
}
~CTextureRef()
{
if (ID >= 0)
{
//Free textures that are no longer reference
CTextureRef tmp = this;
CBase.Drawing.RemoveTexture(ref tmp);
}
}
private void _CalcRatios()
{
// OpenGL has a problem with partial (NPOT) textures, so we remove 1 pixel