Fixed ressource leaks.

This commit is contained in:
Nemirtingas 2019-08-19 19:51:35 +02:00
parent c99628a88a
commit 8757f4a548
3 changed files with 12 additions and 5 deletions

View file

@ -89,7 +89,7 @@ void DX10_Hook::prepareForOverlay(IDXGISwapChain* pSwapChain)
if (!initialized) if (!initialized)
{ {
if (FAILED(pSwapChain->GetDevice(__uuidof(ID3D10Device), (PVOID*)& pDevice))) if (FAILED(pSwapChain->GetDevice(IID_PPV_ARGS(&pDevice))))
return; return;
ImGui::CreateContext(); ImGui::CreateContext();
@ -98,12 +98,14 @@ void DX10_Hook::prepareForOverlay(IDXGISwapChain* pSwapChain)
ID3D10Texture2D* pBackBuffer; ID3D10Texture2D* pBackBuffer;
pSwapChain->GetBuffer(0, __uuidof(ID3D10Texture2D), (LPVOID*)& pBackBuffer); pSwapChain->GetBuffer(0, IID_PPV_ARGS(&pBackBuffer));
pDevice->CreateRenderTargetView(pBackBuffer, NULL, &mainRenderTargetView); pDevice->CreateRenderTargetView(pBackBuffer, NULL, &mainRenderTargetView);
pBackBuffer->Release(); pBackBuffer->Release();
ImGui_ImplDX10_Init(pDevice); ImGui_ImplDX10_Init(pDevice);
pDevice->Release();
initialized = true; initialized = true;
} }

View file

@ -12,7 +12,7 @@ DX11_Hook* DX11_Hook::_inst = nullptr;
HRESULT GetDeviceAndCtxFromSwapchain(IDXGISwapChain* pSwapChain, ID3D11Device** ppDevice, ID3D11DeviceContext** ppContext) HRESULT GetDeviceAndCtxFromSwapchain(IDXGISwapChain* pSwapChain, ID3D11Device** ppDevice, ID3D11DeviceContext** ppContext)
{ {
HRESULT ret = pSwapChain->GetDevice(__uuidof(ID3D11Device), (PVOID*)ppDevice); HRESULT ret = pSwapChain->GetDevice(IID_PPV_ARGS(ppDevice));
if (SUCCEEDED(ret)) if (SUCCEEDED(ret))
(*ppDevice)->GetImmediateContext(ppContext); (*ppDevice)->GetImmediateContext(ppContext);
@ -111,12 +111,14 @@ void DX11_Hook::prepareForOverlay(IDXGISwapChain* pSwapChain)
ID3D11Texture2D* pBackBuffer; ID3D11Texture2D* pBackBuffer;
pSwapChain->GetBuffer(0, __uuidof(ID3D11Texture2D), (LPVOID*)& pBackBuffer); pSwapChain->GetBuffer(0, IID_PPV_ARGS(&pBackBuffer));
pDevice->CreateRenderTargetView(pBackBuffer, NULL, &mainRenderTargetView); pDevice->CreateRenderTargetView(pBackBuffer, NULL, &mainRenderTargetView);
pBackBuffer->Release(); pBackBuffer->Release();
ImGui_ImplDX11_Init(pDevice, pContext); ImGui_ImplDX11_Init(pDevice, pContext);
pDevice->Release();
initialized = true; initialized = true;
} }

View file

@ -138,7 +138,9 @@ void DX12_Hook::prepareForOverlay(IDXGISwapChain* pSwapChain)
} }
if (!SUCCEEDED(pDevice->CreateCommandList(0, D3D12_COMMAND_LIST_TYPE_DIRECT, pCmdAlloc, NULL, IID_PPV_ARGS(&pCmdList)))) if (!SUCCEEDED(pDevice->CreateCommandList(0, D3D12_COMMAND_LIST_TYPE_DIRECT, pCmdAlloc, NULL, IID_PPV_ARGS(&pCmdList))))
{ {
pCmdAlloc->Release();
pDescriptorHeap->Release();
pDevice->Release();
return; return;
} }
@ -150,6 +152,7 @@ void DX12_Hook::prepareForOverlay(IDXGISwapChain* pSwapChain)
pDescriptorHeap->GetCPUDescriptorHandleForHeapStart(), pDescriptorHeap->GetCPUDescriptorHandleForHeapStart(),
pDescriptorHeap->GetGPUDescriptorHandleForHeapStart()); pDescriptorHeap->GetGPUDescriptorHandleForHeapStart());
pCmdList->Release();
pCmdAlloc->Release(); pCmdAlloc->Release();
pDescriptorHeap->Release(); pDescriptorHeap->Release();
pDevice->Release(); pDevice->Release();