Fixed memory leak

This commit is contained in:
Nemirtingas 2019-08-25 21:22:25 +02:00
parent 42a22dd4bb
commit cd8c5fc2ea
7 changed files with 20 additions and 11 deletions

View File

@ -12,6 +12,7 @@
#include <Windows.h>
Base_Hook::Base_Hook():
_library(nullptr),
_hooked(false)
{}

View File

@ -12,6 +12,7 @@ DX10_Hook* DX10_Hook::_inst = nullptr;
bool DX10_Hook::start_hook()
{
bool res = true;
if (!_hooked)
{
if (!Windows_Hook::Inst().start_hook())
@ -63,12 +64,12 @@ bool DX10_Hook::start_hook()
else
{
PRINT_DEBUG("Failed to hook DirectX 10\n");
return false;
res = false;
}
if(pDevice)pDevice->Release();
if(pSwapChain)pSwapChain->Release();
}
return true;
return res;
}
void DX10_Hook::resetRenderState()

View File

@ -22,6 +22,7 @@ HRESULT GetDeviceAndCtxFromSwapchain(IDXGISwapChain* pSwapChain, ID3D11Device**
bool DX11_Hook::start_hook()
{
bool res = true;
if (!_hooked)
{
if (!Windows_Hook::Inst().start_hook())
@ -73,13 +74,13 @@ bool DX11_Hook::start_hook()
else
{
PRINT_DEBUG("Failed to hook DirectX 11\n");
return false;
res = false;
}
if(pDevice) pDevice->Release();
if(pSwapChain) pSwapChain->Release();
}
return true;
return res;
}
void DX11_Hook::resetRenderState()

View File

@ -14,6 +14,7 @@ DX12_Hook* DX12_Hook::_inst = nullptr;
bool DX12_Hook::start_hook()
{
bool res = true;
if (!_hooked)
{
if (!Windows_Hook::Inst().start_hook())
@ -79,7 +80,7 @@ bool DX12_Hook::start_hook()
else
{
PRINT_DEBUG("Failed to hook DirectX 12\n");
return false;
res = false;
}
}
}
@ -89,7 +90,7 @@ bool DX12_Hook::start_hook()
if (pCommandQueue) pCommandQueue->Release();
if (pDevice) pDevice->Release();
}
return true;
return res;
}
void DX12_Hook::resetRenderState()

View File

@ -14,6 +14,7 @@ DX9_Hook* DX9_Hook::_inst = nullptr;
bool DX9_Hook::start_hook()
{
bool res = true;
if (!_hooked)
{
if (!Windows_Hook::Inst().start_hook())
@ -60,13 +61,13 @@ bool DX9_Hook::start_hook()
else
{
PRINT_DEBUG("Failed to DirectX 9\n");
return false;
res = false;
}
if(pDeviceEx)pDeviceEx->Release();
if(pD3D)pD3D->Release();
}
return true;
return res;
}
void DX9_Hook::resetRenderState()

View File

@ -16,6 +16,7 @@ OpenGL_Hook* OpenGL_Hook::_inst = nullptr;
bool OpenGL_Hook::start_hook()
{
bool res = true;
if (!_hooked)
{
if (!Windows_Hook::Inst().start_hook())
@ -46,7 +47,7 @@ bool OpenGL_Hook::start_hook()
PRINT_DEBUG("Failed to hook OpenGL\n");
/* Problem: glewInit failed, something is seriously wrong. */
PRINT_DEBUG("Error: %s\n", glewGetErrorString(err));
return false;
res = false;
}
}
return true;

View File

@ -37,6 +37,7 @@ HWND GetGameWindow()
bool Windows_Hook::start_hook()
{
bool res = true;
if (!_hooked)
{
GetRawInputBuffer = ::GetRawInputBuffer;
@ -51,7 +52,7 @@ bool Windows_Hook::start_hook()
_hooked = true;
}
return true;
return res;
}
void Windows_Hook::resetRenderState()
@ -171,7 +172,7 @@ Windows_Hook::Windows_Hook() :
GetRawInputBuffer(nullptr),
GetRawInputData(nullptr)
{
//_library = LoadLibrary(DLL_NAME);
}
Windows_Hook::~Windows_Hook()
@ -179,6 +180,8 @@ Windows_Hook::~Windows_Hook()
PRINT_DEBUG("Windows Hook removed\n");
resetRenderState();
//FreeLibrary(reinterpret_cast<HMODULE>(_library));
}
Windows_Hook& Windows_Hook::Inst()