Fixed crashes due to wrong use of append allocations

This commit is contained in:
Simon Lübeß
2025-02-24 23:00:09 +01:00
parent 28121d1b42
commit 0236130df1
5 changed files with 26 additions and 13 deletions
+4 -2
View File
@@ -20,13 +20,13 @@ namespace GlitchyEngine
private bool _running = true;
private bool _isMinimized = false;
private append LayerStack _layerStack = .() ~ delete:append _;
private append LayerStack _layerStack = .();
#if IMGUI
private ImGuiLayer _imGuiLayer;
#endif
private append GameTime _gameTime = .() ~ delete:append _;
private append GameTime _gameTime = .();
private IContentManager _contentManager;
@@ -98,6 +98,8 @@ namespace GlitchyEngine
{
Profiler.ProfileFunction!();
_layerStack.ClearLayers();
SamplerStateManager.Uninit();
Renderer.Deinit();
+1 -1
View File
@@ -8,7 +8,7 @@ namespace GlitchyEngine
*/
public class GameTime
{
private append Stopwatch _stopwatch = .() ~ delete:append _;
private append Stopwatch _stopwatch = .();
private uint64 _frameCount;
+8 -1
View File
@@ -4,15 +4,22 @@ namespace GlitchyEngine
{
public class LayerStack
{
private List<Layer> _layers = new List<Layer>() ~ delete _;
private append List<Layer> _layers = .();
public ~this()
{
ClearLayers();
}
public void ClearLayers()
{
for(let layer in _layers)
{
layer.OnDetach();
delete layer;
}
_layers.Clear();
}
/*
+13 -8
View File
@@ -16,18 +16,18 @@ class EngineClasses
{
// TODO: Not all of these are actually ScriptClasses (actually none of them are...)
private ScriptClass s_ComponentRoot ~ _?.ReleaseRef();
private ScriptClass s_EntityRoot ~ _?.ReleaseRef();
private ScriptClass s_EngineObject ~ _?.ReleaseRef();
private ScriptClass s_ComponentRoot;
private ScriptClass s_EntityRoot;
private ScriptClass s_EngineObject;
private EntityEditorWrapper s_EntityEditor ~ _?.ReleaseRef();
private EntityEditorWrapper s_EntityEditor;
private EntitySerializerWrapper s_EntitySerializer ~ _?.ReleaseRef();
private ScriptClass s_SerializationContext ~ _?.ReleaseRef();
private EntitySerializerWrapper s_EntitySerializer;
private ScriptClass s_SerializationContext;
private ScriptClass s_Collision2D ~ _?.ReleaseRef();
private ScriptClass s_Collision2D;
private ScriptClass s_RunInEditModeAttribute ~ _?.ReleaseRef();
private ScriptClass s_RunInEditModeAttribute;
public ScriptClass ComponentRoot => s_ComponentRoot;
public ScriptClass EntityRoot => s_EntityRoot;
@@ -41,6 +41,11 @@ class EngineClasses
public ScriptClass RunInEditModeAttribute => s_RunInEditModeAttribute;
public ~this()
{
ReleaseAndNullify();
}
internal void ReleaseAndNullify()
{
ReleaseRefAndNullify!(s_EngineObject);
@@ -18,7 +18,6 @@ public class ScriptInstanceSerializer
public ~this()
{
Clear();
delete:append _serializedData;
}
public void Clear()