mirror of
https://github.com/MaddyThorson/StrawberryBF.git
synced 2024-11-29 17:08:55 +08:00
Fixed Sprite loading memory leaks
This commit is contained in:
parent
1dd219ae9f
commit
a2f5f157fc
|
@ -203,7 +203,7 @@ namespace Strawberry
|
||||||
layers.Add(layer);
|
layers.Add(layer);
|
||||||
}
|
}
|
||||||
// CEL CHUNK
|
// CEL CHUNK
|
||||||
else if (chunkType == Chunks.Cel) Cel:
|
else if (chunkType == Chunks.Cel)
|
||||||
{
|
{
|
||||||
var layer = layers[WORD()];
|
var layer = layers[WORD()];
|
||||||
var x = SHORT();
|
var x = SHORT();
|
||||||
|
@ -250,7 +250,7 @@ namespace Strawberry
|
||||||
}
|
}
|
||||||
|
|
||||||
// get pixel data
|
// get pixel data
|
||||||
pixels = scope:Cel Color[width * height];
|
pixels = new Color[width * height];
|
||||||
BytesToPixels(temp, pixels, mode, palette);
|
BytesToPixels(temp, pixels, mode, palette);
|
||||||
}
|
}
|
||||||
// REFERENCE
|
// REFERENCE
|
||||||
|
@ -437,7 +437,7 @@ namespace Strawberry
|
||||||
{
|
{
|
||||||
public SDL.Texture* Texture;
|
public SDL.Texture* Texture;
|
||||||
public float Duration;
|
public float Duration;
|
||||||
public List<Cel> Cels = new List<Cel>() ~ delete _;
|
public List<Cel> Cels;
|
||||||
public uint8* Pixels;
|
public uint8* Pixels;
|
||||||
public int32 PixelsLength;
|
public int32 PixelsLength;
|
||||||
|
|
||||||
|
@ -448,10 +448,16 @@ namespace Strawberry
|
||||||
void* ptr;
|
void* ptr;
|
||||||
SDL.LockTexture(Texture, null, out ptr, out PixelsLength);
|
SDL.LockTexture(Texture, null, out ptr, out PixelsLength);
|
||||||
Pixels = (uint8*)ptr;
|
Pixels = (uint8*)ptr;
|
||||||
|
|
||||||
|
Cels = new List<Cel>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public ~this()
|
public ~this()
|
||||||
{
|
{
|
||||||
|
for (let c in Cels)
|
||||||
|
delete c;
|
||||||
|
delete Cels;
|
||||||
|
|
||||||
SDL.DestroyTexture(Texture);
|
SDL.DestroyTexture(Texture);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -499,7 +505,7 @@ namespace Strawberry
|
||||||
private class Cel : HasUserData
|
private class Cel : HasUserData
|
||||||
{
|
{
|
||||||
public Layer Layer;
|
public Layer Layer;
|
||||||
public Color[] Pixels;
|
public Color[] Pixels ~ delete _;
|
||||||
public Cel Link;
|
public Cel Link;
|
||||||
|
|
||||||
public int X;
|
public int X;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user