From cb209718bedac88e2207ec4a83b6c72bde7a4f4d Mon Sep 17 00:00:00 2001 From: Stephen Saunders Date: Fri, 17 Nov 2023 00:11:54 -0500 Subject: [PATCH] Fix lightGridPoints and demo entity joints memory leaks --- neo/framework/Common_demos.cpp | 3 +++ neo/renderer/RenderWorld_load.cpp | 5 ++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/neo/framework/Common_demos.cpp b/neo/framework/Common_demos.cpp index 5ac57ce0..2e7ba775 100644 --- a/neo/framework/Common_demos.cpp +++ b/neo/framework/Common_demos.cpp @@ -164,6 +164,9 @@ void idCommonLocal::StopPlayingRenderDemo() readDemo->Close(); + // SRS - free entity joints allocated by demo playback, otherwise will leak + R_FreeDerivedData(); + soundWorld->StopAllSounds(); soundSystem->SetPlayingSoundWorld( menuSoundWorld ); diff --git a/neo/renderer/RenderWorld_load.cpp b/neo/renderer/RenderWorld_load.cpp index f60f13c0..ead8860b 100644 --- a/neo/renderer/RenderWorld_load.cpp +++ b/neo/renderer/RenderWorld_load.cpp @@ -57,6 +57,9 @@ void idRenderWorldLocal::FreeWorld() R_StaticFree( portal ); } + // SRS - release the lightGridPoints idList or it will leak + area->lightGrid.lightGridPoints.Clear(); + // there shouldn't be any remaining lightRefs or entityRefs if( area->lightRefs.areaNext != &area->lightRefs ) { @@ -1186,4 +1189,4 @@ ResetLocalRenderModels void idRenderWorldLocal::ResetLocalRenderModels() { localModels.Clear(); // Clear out the list when switching between expansion packs, so InitFromMap doesn't try to delete the list whose content has already been deleted by the model manager being re-started -} \ No newline at end of file +}