SDL: Fixed crash when running with the dummy video driver

From 951657c99b33852d58b934152226410034a06f49 Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Tue, 25 Jul 2023 12:08:21 -0700
Subject: [PATCH] Fixed crash when running with the dummy video driver

---
 src/render/direct3d12/SDL_render_d3d12.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/src/render/direct3d12/SDL_render_d3d12.c b/src/render/direct3d12/SDL_render_d3d12.c
index 47d3a8643e9f..cf49020abd10 100644
--- a/src/render/direct3d12/SDL_render_d3d12.c
+++ b/src/render/direct3d12/SDL_render_d3d12.c
@@ -1141,7 +1141,7 @@ static int D3D12_GetViewportAlignedD3DRect(SDL_Renderer *renderer, const SDL_Rec
 static HRESULT D3D12_CreateSwapChain(SDL_Renderer *renderer, int w, int h)
 {
     D3D12_RenderData *data = (D3D12_RenderData *)renderer->driverdata;
-    IDXGISwapChain1* swapChain;
+    IDXGISwapChain1* swapChain = NULL;
     HRESULT result = S_OK;
     SDL_SysWMinfo windowinfo;
 
@@ -1166,7 +1166,13 @@ static HRESULT D3D12_CreateSwapChain(SDL_Renderer *renderer, int w, int h)
                           DXGI_SWAP_CHAIN_FLAG_ALLOW_TEARING;                  /* To support presenting with allow tearing on */
 
     SDL_VERSION(&windowinfo.version);
-    SDL_GetWindowWMInfo(renderer->window, &windowinfo);
+    if (!SDL_GetWindowWMInfo(renderer->window, &windowinfo) ||
+        windowinfo.subsystem != SDL_SYSWM_WINDOWS)
+    {
+        SDL_SetError("Couldn't get window handle");
+        result = E_FAIL;
+        goto done;
+    }
 
     result = D3D_CALL(data->dxgiFactory, CreateSwapChainForHwnd,
                       (IUnknown *)data->commandQueue,