Fixed crash on stop. Was destroying the device and not the renderer.

This commit is contained in:
2025-02-02 15:17:09 -05:00
parent 97c2b3c1dc
commit 7d0b8be65c

View File

@@ -198,6 +198,28 @@ namespace Juliet
void DestroyRenderer_Internal(NonNullPtr<D3D12Renderer> renderer) void DestroyRenderer_Internal(NonNullPtr<D3D12Renderer> renderer)
{ {
if (renderer->IndirectDrawCommandSignature)
{
ID3D12CommandSignature_Release(renderer->IndirectDrawCommandSignature);
renderer->IndirectDrawCommandSignature = nullptr;
}
if (renderer->IndirectIndexedDrawCommandSignature)
{
ID3D12CommandSignature_Release(renderer->IndirectIndexedDrawCommandSignature);
renderer->IndirectIndexedDrawCommandSignature = nullptr;
}
if (renderer->IndirectDispatchCommandSignature)
{
ID3D12CommandSignature_Release(renderer->IndirectDispatchCommandSignature);
renderer->IndirectDispatchCommandSignature = nullptr;
}
if (renderer->CommandQueue)
{
ID3D12CommandQueue_Release(renderer->CommandQueue);
renderer->CommandQueue = nullptr;
}
if (renderer->D3D12Device) if (renderer->D3D12Device)
{ {
ID3D12Device_Release(renderer->D3D12Device); ID3D12Device_Release(renderer->D3D12Device);
@@ -231,7 +253,7 @@ namespace Juliet
void DestroyGraphicsDevice(NonNullPtr<GraphicsDevice> device) void DestroyGraphicsDevice(NonNullPtr<GraphicsDevice> device)
{ {
auto* renderer = reinterpret_cast<D3D12Renderer*>(device.Get()); auto* renderer = reinterpret_cast<D3D12Renderer*>(device->Renderer);
DestroyRenderer_Internal(renderer); DestroyRenderer_Internal(renderer);
Free(device.Get()); Free(device.Get());
} }