GlitterX: Fixed memory leaks caused by missing deallocation after use

This commit is contained in:
korenkonder
2025-06-17 15:48:05 +03:00
parent 292b670eed
commit 3f85955ab7
4 changed files with 12 additions and 7 deletions
+1 -1
View File
@@ -46,8 +46,8 @@ namespace Glitter {
}
if (farc) {
farc = 0;
delete farc;
farc = 0;
}
if (resource_hashes) {
+1 -1
View File
@@ -1251,7 +1251,7 @@ namespace Glitter {
void Copy(RenderGroupX* dst);
void Ctrl(float_t delta_frame, bool copy_mats);
void CtrlParticle(RenderElementX* rend_elem, float_t delta_frame);
void DeleteBuffers(bool a2);
void DeleteBuffers(bool free);
void Emit(ParticleX::Data* ptcl_data,
EmitterInstX* emit_inst, int32_t dup_count, int32_t count, float_t frame);
void Free();
+8 -4
View File
@@ -360,11 +360,11 @@ namespace Glitter {
rend_elem->frame -= rend_elem->life_time;
}
void RenderGroupX::DeleteBuffers(bool a2) {
void RenderGroupX::DeleteBuffers(bool free) {
ParticleX* ptcl = 0;
if (particle) {
ptcl = particle->data.particle;
if (!a2)
if (!free)
particle->data.render_group = 0;
particle = 0;
}
@@ -379,9 +379,13 @@ namespace Glitter {
ptcl->buffer_used = false;
#endif
if (!a2 && elements) {
if (!free && elements) {
Free();
free_def(elements);
if (elements) {
delete[] elements;
elements = 0;
}
}
}
+2 -1
View File
@@ -1020,7 +1020,8 @@ namespace Glitter {
}
RenderSceneX::~RenderSceneX() {
for (RenderGroupX*& i : groups)
delete i;
}
void RenderSceneX::Append(RenderGroupX* rend_group) {