mirror of
https://github.com/optiscaler/OptiScaler.git
synced 2026-05-29 21:13:14 +00:00
hopefully better object disposal
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user