Do a full cleanup if renderer creation fails during autodetection

This commit is contained in:
Sam Lantinga
2024-07-27 16:19:05 -07:00
parent ebd059e6eb
commit 95dd8781ce
10 changed files with 5 additions and 26 deletions

View File

@@ -644,9 +644,9 @@ static int D3D12_IssueBatch(D3D12_RenderData *data)
static void D3D12_DestroyRenderer(SDL_Renderer *renderer)
{
D3D12_RenderData *data = (D3D12_RenderData *)renderer->internal;
D3D12_WaitForGPU(data);
D3D12_ReleaseAll(renderer);
if (data) {
D3D12_WaitForGPU(data);
D3D12_ReleaseAll(renderer);
SDL_free(data);
}
}
@@ -3343,11 +3343,9 @@ int D3D12_CreateRenderer(SDL_Renderer *renderer, SDL_Window *window, SDL_Propert
/* Initialize Direct3D resources */
if (FAILED(D3D12_CreateDeviceResources(renderer))) {
D3D12_DestroyRenderer(renderer);
return -1;
}
if (FAILED(D3D12_CreateWindowSizeDependentResources(renderer))) {
D3D12_DestroyRenderer(renderer);
return -1;
}