From 0bbb72e24dab5a0e89e9d7f69bd7c1defdcdcd52 Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Fri, 13 Aug 2021 13:13:12 +0200 Subject: [PATCH] Fix some memory leaks --- Source/Engine/Input/Input.cpp | 22 ++++++++++++++++++++++ Source/Engine/Threading/JobSystem.cpp | 10 +++++++--- 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/Source/Engine/Input/Input.cpp b/Source/Engine/Input/Input.cpp index 44131504d..788ea6f2e 100644 --- a/Source/Engine/Input/Input.cpp +++ b/Source/Engine/Input/Input.cpp @@ -73,6 +73,7 @@ public: } void Update() override; + void Dispose() override; }; InputService InputServiceInstance; @@ -914,3 +915,24 @@ void InputService::Update() } } } + +void InputService::Dispose() +{ + // Dispose input devices + if (Input::Mouse) + { + Input::Mouse->DeleteObject(); + Input::Mouse = nullptr; + } + if (Input::Keyboard) + { + Input::Keyboard->DeleteObject(); + Input::Keyboard = nullptr; + } + for (int32 i = 0; i < Input::Gamepads.Count(); i++) + Input::Gamepads[i]->DeleteObject(); + Input::Gamepads.Clear(); + for (int32 i = 0; i < Input::CustomDevices.Count(); i++) + Input::CustomDevices[i]->DeleteObject(); + Input::CustomDevices.Clear(); +} diff --git a/Source/Engine/Threading/JobSystem.cpp b/Source/Engine/Threading/JobSystem.cpp index 7b6651952..56d23901c 100644 --- a/Source/Engine/Threading/JobSystem.cpp +++ b/Source/Engine/Threading/JobSystem.cpp @@ -134,9 +134,13 @@ void JobSystemService::Dispose() for (int32 i = 0; i < ThreadsCount; i++) { - if (Threads[i] && Threads[i]->IsRunning()) - Threads[i]->Kill(true); - Threads[i] = nullptr; + if (Threads[i]) + { + if (Threads[i]->IsRunning()) + Threads[i]->Kill(true); + Delete(Threads[i]); + Threads[i] = nullptr; + } } }