Remove textures with no references
This commit is contained in:
1 parent
7f8e974fe1
commit
37aa8e5219
3 files changed
+15
-2
No files matched your search
@@ -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)
|
||||
|
||||
@@ -383,6 +383,7 @@ namespace Vocaluxe.Lib.Draw
|
||||
_Textures.Remove(texture.ID);
|
||||
}
|
||||
}
|
||||
texture.ID = -1;
|
||||
texture = null;
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in new issue
Block a user