summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authoraap <aap@papnet.eu>2020-12-29 20:30:57 +0100
committeraap <aap@papnet.eu>2020-12-29 20:30:57 +0100
commit14f7dbade88da108bf135aaeaaead9b14c654a14 (patch)
treef4cd6a350e04885473f7d7c6312c2ae897c96b4f /src
parentd39c145f603deaa50c81e3fe42e2c02097c2137c (diff)
fix custom pipes mem leak
Diffstat (limited to 'src')
-rw-r--r--src/core/Game.cpp14
-rw-r--r--src/core/main.cpp15
-rw-r--r--src/extras/custompipes_d3d9.cpp9
3 files changed, 24 insertions, 14 deletions
diff --git a/src/core/Game.cpp b/src/core/Game.cpp
index ff87b95a..7961b981 100644
--- a/src/core/Game.cpp
+++ b/src/core/Game.cpp
@@ -274,12 +274,26 @@ CGame::InitialiseRenderWare(void)
CPlayerSkin::Initialise();
#endif
+#ifdef EXTENDED_PIPELINES
+ CustomPipes::CustomPipeInit(); // need Scene.world for this
+#endif
+#ifdef SCREEN_DROPLETS
+ ScreenDroplets::InitDraw();
+#endif
+
return (true);
}
// missing altogether on PS2
void CGame::ShutdownRenderWare(void)
{
+#ifdef SCREEN_DROPLETS
+ ScreenDroplets::Shutdown();
+#endif
+#ifdef EXTENDED_PIPELINES
+ CustomPipes::CustomPipeShutdown();
+#endif
+
CMBlur::MotionBlurClose();
DestroySplashScreen();
CHud::Shutdown();
diff --git a/src/core/main.cpp b/src/core/main.cpp
index 4b70a153..6e047b19 100644
--- a/src/core/main.cpp
+++ b/src/core/main.cpp
@@ -480,14 +480,7 @@ Initialise3D(void *param)
DebugMenuInit();
DebugMenuPopulate();
#endif // !DEBUGMENU
- bool ret = CGame::InitialiseRenderWare();
-#ifdef EXTENDED_PIPELINES
- CustomPipes::CustomPipeInit(); // need Scene.world for this
-#endif
-#ifdef SCREEN_DROPLETS
- ScreenDroplets::InitDraw();
-#endif
- return ret;
+ return CGame::InitialiseRenderWare();
}
return (FALSE);
@@ -496,12 +489,6 @@ Initialise3D(void *param)
static void
Terminate3D(void)
{
-#ifdef SCREEN_DROPLETS
- ScreenDroplets::Shutdown();
-#endif
-#ifdef EXTENDED_PIPELINES
- CustomPipes::CustomPipeShutdown();
-#endif
CGame::ShutdownRenderWare();
#ifdef DEBUGMENU
DebugMenuShutdown();
diff --git a/src/extras/custompipes_d3d9.cpp b/src/extras/custompipes_d3d9.cpp
index 27006c6a..e670fc93 100644
--- a/src/extras/custompipes_d3d9.cpp
+++ b/src/extras/custompipes_d3d9.cpp
@@ -171,6 +171,9 @@ DestroyVehiclePipe(void)
rw::d3d::destroyVertexShader(neoVehicle_VS);
neoVehicle_VS = nil;
+ rw::d3d::destroyPixelShader(neoVehicle_PS);
+ neoVehicle_PS = nil;
+
((rw::d3d9::ObjPipeline*)vehiclePipe)->destroy();
vehiclePipe = nil;
}
@@ -362,6 +365,12 @@ CreateGlossPipe(void)
void
DestroyGlossPipe(void)
{
+ rw::d3d::destroyVertexShader(neoGloss_VS);
+ neoGloss_VS = nil;
+
+ rw::d3d::destroyPixelShader(neoGloss_PS);
+ neoGloss_PS = nil;
+
((rw::d3d9::ObjPipeline*)glossPipe)->destroy();
glossPipe = nil;
}