hopefully better object disposal

This commit is contained in:
cdozdil
2024-12-18 00:32:01 +03:00
parent 2ff73c3a93
commit 4a32e7253d
5 changed files with 69 additions and 60 deletions
+15 -4
View File
@@ -19,8 +19,6 @@ IFeature_Dx12::IFeature_Dx12(unsigned int InHandleId, NVSDK_NGX_Parameter* InPar
void IFeature_Dx12::Shutdown()
{
if (Imgui != nullptr && Imgui.get() != nullptr)
Imgui.reset();
}
IFeature_Dx12::~IFeature_Dx12()
@@ -53,7 +51,20 @@ IFeature_Dx12::~IFeature_Dx12()
}
}
if (OutputScaler != nullptr && OutputScaler.get() != nullptr)
OutputScaler.reset();
if (!Config::Instance()->IsShuttingDown)
{
LOG_DEBUG("");
if (Imgui != nullptr && Imgui.get() != nullptr)
Imgui.reset();
if (OutputScaler != nullptr && OutputScaler.get() != nullptr)
OutputScaler.reset();
if (RCAS != nullptr && RCAS.get() != nullptr)
RCAS.reset();
if (Bias != nullptr && Bias.get() != nullptr)
Bias.reset();
}
}
@@ -415,6 +415,4 @@ bool XeSSFeatureDx12::Evaluate(ID3D12GraphicsCommandList* InCommandList, NVSDK_N
XeSSFeatureDx12::~XeSSFeatureDx12()
{
if (RCAS != nullptr && RCAS.get() != nullptr)
RCAS.reset();
}
+18 -18
View File
@@ -420,30 +420,30 @@ Bias_Dx12::~Bias_Dx12()
if (!_init || Config::Instance()->IsShuttingDown)
return;
ID3D12Fence* d3d12Fence = nullptr;
//ID3D12Fence* d3d12Fence = nullptr;
do
{
if (_device->CreateFence(0, D3D12_FENCE_FLAG_NONE, IID_PPV_ARGS(&d3d12Fence)) != S_OK)
break;
//do
//{
// if (_device->CreateFence(0, D3D12_FENCE_FLAG_NONE, IID_PPV_ARGS(&d3d12Fence)) != S_OK)
// break;
d3d12Fence->Signal(999);
// d3d12Fence->Signal(999);
HANDLE fenceEvent = CreateEvent(nullptr, FALSE, FALSE, nullptr);
// HANDLE fenceEvent = CreateEvent(nullptr, FALSE, FALSE, nullptr);
if (fenceEvent != NULL && d3d12Fence->SetEventOnCompletion(999, fenceEvent) == S_OK)
{
WaitForSingleObject(fenceEvent, INFINITE);
CloseHandle(fenceEvent);
}
// if (fenceEvent != NULL && d3d12Fence->SetEventOnCompletion(999, fenceEvent) == S_OK)
// {
// WaitForSingleObject(fenceEvent, INFINITE);
// CloseHandle(fenceEvent);
// }
} while (false);
//} while (false);
if (d3d12Fence != nullptr)
{
d3d12Fence->Release();
d3d12Fence = nullptr;
}
//if (d3d12Fence != nullptr)
//{
// d3d12Fence->Release();
// d3d12Fence = nullptr;
//}
if (_rootSignature != nullptr)
{
+18 -18
View File
@@ -545,30 +545,30 @@ OS_Dx12::~OS_Dx12()
if (!_init || Config::Instance()->IsShuttingDown)
return;
ID3D12Fence* d3d12Fence = nullptr;
//ID3D12Fence* d3d12Fence = nullptr;
do
{
if (_device->CreateFence(0, D3D12_FENCE_FLAG_NONE, IID_PPV_ARGS(&d3d12Fence)) != S_OK)
break;
//do
//{
// if (_device->CreateFence(0, D3D12_FENCE_FLAG_NONE, IID_PPV_ARGS(&d3d12Fence)) != S_OK)
// break;
d3d12Fence->Signal(999);
// d3d12Fence->Signal(999);
HANDLE fenceEvent = CreateEvent(nullptr, FALSE, FALSE, nullptr);
// HANDLE fenceEvent = CreateEvent(nullptr, FALSE, FALSE, nullptr);
if (fenceEvent != NULL && d3d12Fence->SetEventOnCompletion(999, fenceEvent) == S_OK)
{
WaitForSingleObject(fenceEvent, INFINITE);
CloseHandle(fenceEvent);
}
// if (fenceEvent != NULL && d3d12Fence->SetEventOnCompletion(999, fenceEvent) == S_OK)
// {
// WaitForSingleObject(fenceEvent, INFINITE);
// CloseHandle(fenceEvent);
// }
} while (false);
//} while (false);
if (d3d12Fence != nullptr)
{
d3d12Fence->Release();
d3d12Fence = nullptr;
}
//if (d3d12Fence != nullptr)
//{
// d3d12Fence->Release();
// d3d12Fence = nullptr;
//}
if (_pipelineState != nullptr)
{
+18 -18
View File
@@ -482,30 +482,30 @@ RCAS_Dx12::~RCAS_Dx12()
if (!_init || Config::Instance()->IsShuttingDown)
return;
ID3D12Fence* d3d12Fence = nullptr;
//ID3D12Fence* d3d12Fence = nullptr;
do
{
if (_device->CreateFence(0, D3D12_FENCE_FLAG_NONE, IID_PPV_ARGS(&d3d12Fence)) != S_OK)
break;
//do
//{
// if (_device->CreateFence(0, D3D12_FENCE_FLAG_NONE, IID_PPV_ARGS(&d3d12Fence)) != S_OK)
// break;
d3d12Fence->Signal(999);
// d3d12Fence->Signal(999);
HANDLE fenceEvent = CreateEvent(nullptr, FALSE, FALSE, nullptr);
// HANDLE fenceEvent = CreateEvent(nullptr, FALSE, FALSE, nullptr);
if (fenceEvent != NULL && d3d12Fence->SetEventOnCompletion(999, fenceEvent) == S_OK)
{
WaitForSingleObject(fenceEvent, INFINITE);
CloseHandle(fenceEvent);
}
// if (fenceEvent != NULL && d3d12Fence->SetEventOnCompletion(999, fenceEvent) == S_OK)
// {
// WaitForSingleObject(fenceEvent, INFINITE);
// CloseHandle(fenceEvent);
// }
} while (false);
//} while (false);
if (d3d12Fence != nullptr)
{
d3d12Fence->Release();
d3d12Fence = nullptr;
}
//if (d3d12Fence != nullptr)
//{
// d3d12Fence->Release();
// d3d12Fence = nullptr;
//}
if (_rootSignature != nullptr)
{