Skip to content

Commit 436db65

Browse files
committed
Fix D3D11 build
1 parent 6f86b6f commit 436db65

File tree

1 file changed

+59
-2
lines changed

1 file changed

+59
-2
lines changed

src/FNA3D_Driver_D3D11.c

+59-2
Original file line numberDiff line numberDiff line change
@@ -1072,7 +1072,18 @@ static void D3D11_DestroyDevice(FNA3D_Device *device)
10721072
swapchainData = renderer->swapchainDatas[i];
10731073
ID3D11RenderTargetView_Release(swapchainData->swapchainRTView);
10741074
IDXGISwapChain_Release(swapchainData->swapchain);
1075-
SDL_ClearProperty(SDL_GetWindowProperties(swapchainData->windowHandle), WINDOW_SWAPCHAIN_DATA);
1075+
#if SDL_MAJOR_VERSION >= 3
1076+
SDL_ClearProperty(
1077+
SDL_GetWindowProperties(swapchainData->windowHandle),
1078+
WINDOW_SWAPCHAIN_DATA
1079+
);
1080+
#else
1081+
SDL_SetWindowData(
1082+
(SDL_Window*) swapchainData->windowHandle,
1083+
WINDOW_SWAPCHAIN_DATA,
1084+
NULL
1085+
);
1086+
#endif
10761087
SDL_free(renderer->swapchainDatas[i]);
10771088
}
10781089
SDL_free(renderer->swapchainDatas);
@@ -1533,11 +1544,18 @@ static void D3D11_SwapBuffers(
15331544
}
15341545
}
15351546

1547+
#if SDL_MAJOR_VERSION >= 3
15361548
swapchainData = (D3D11SwapchainData*) SDL_GetProperty(
15371549
SDL_GetWindowProperties(overrideWindowHandle),
15381550
WINDOW_SWAPCHAIN_DATA,
15391551
NULL
15401552
);
1553+
#else
1554+
swapchainData = (D3D11SwapchainData*) SDL_GetWindowData(
1555+
(SDL_Window*) overrideWindowHandle,
1556+
WINDOW_SWAPCHAIN_DATA
1557+
);
1558+
#endif
15411559
if (swapchainData == NULL)
15421560
{
15431561
D3D11_INTERNAL_CreateSwapChain(
@@ -1546,11 +1564,18 @@ static void D3D11_SwapBuffers(
15461564
(SDL_Window*) overrideWindowHandle,
15471565
NULL
15481566
);
1567+
#if SDL_MAJOR_VERSION >= 3
15491568
swapchainData = (D3D11SwapchainData*) SDL_GetProperty(
15501569
SDL_GetWindowProperties(overrideWindowHandle),
15511570
WINDOW_SWAPCHAIN_DATA,
15521571
NULL
15531572
);
1573+
#else
1574+
swapchainData = (D3D11SwapchainData*) SDL_GetWindowData(
1575+
(SDL_Window*) overrideWindowHandle,
1576+
WINDOW_SWAPCHAIN_DATA
1577+
);
1578+
#endif
15541579
D3D11_INTERNAL_UpdateSwapchainRT(
15551580
renderer,
15561581
swapchainData,
@@ -2548,7 +2573,18 @@ static void D3D11_INTERNAL_CreateSwapChain(
25482573
#ifdef FNA3D_DXVK_NATIVE
25492574
dxgiHandle = (HWND) windowHandle;
25502575
#else
2551-
dxgiHandle = (HWND) SDL_GetProperty(SDL_GetWindowProperties(windowHandle), SDL_PROP_WINDOW_WIN32_HWND_POINTER, NULL);
2576+
#if SDL_MAJOR_VERSION >= 3
2577+
dxgiHandle = (HWND) SDL_GetProperty(
2578+
SDL_GetWindowProperties(windowHandle),
2579+
SDL_PROP_WINDOW_WIN32_HWND_POINTER,
2580+
NULL
2581+
);
2582+
#else
2583+
SDL_SysWMinfo info;
2584+
SDL_VERSION(&info.version);
2585+
SDL_GetWindowWMInfo((SDL_Window*) windowHandle, &info);
2586+
dxgiHandle = info.info.win.window;
2587+
#endif
25522588
#endif /* FNA3D_DXVK_NATIVE */
25532589

25542590
/* Initialize swapchain buffer descriptor */
@@ -2676,7 +2712,11 @@ static void D3D11_INTERNAL_CreateSwapChain(
26762712
swapchainData->windowHandle = windowHandle;
26772713
swapchainData->swapchainRTView = NULL;
26782714
swapchainData->format = backBufferFormat;
2715+
#if SDL_MAJOR_VERSION >= 3
26792716
SDL_SetProperty(SDL_GetWindowProperties(windowHandle), WINDOW_SWAPCHAIN_DATA, swapchainData);
2717+
#else
2718+
SDL_SetWindowData((SDL_Window*) windowHandle, WINDOW_SWAPCHAIN_DATA, swapchainData);
2719+
#endif
26802720
if (growSwapchains)
26812721
{
26822722
if (renderer->swapchainDataCount >= renderer->swapchainDataCapacity)
@@ -2771,11 +2811,18 @@ static void D3D11_INTERNAL_CreateBackbuffer(
27712811
/* Create or update the swapchain */
27722812
if (parameters->deviceWindowHandle != NULL)
27732813
{
2814+
#if SDL_MAJOR_VERSION >= 3
27742815
swapchainData = (D3D11SwapchainData*) SDL_GetProperty(
27752816
SDL_GetWindowProperties(parameters->deviceWindowHandle),
27762817
WINDOW_SWAPCHAIN_DATA,
27772818
NULL
27782819
);
2820+
#else
2821+
swapchainData = (D3D11SwapchainData*) SDL_GetWindowData(
2822+
(SDL_Window*) parameters->deviceWindowHandle,
2823+
WINDOW_SWAPCHAIN_DATA
2824+
);
2825+
#endif
27792826
if (swapchainData == NULL)
27802827
{
27812828
D3D11_INTERNAL_CreateSwapChain(
@@ -2784,11 +2831,18 @@ static void D3D11_INTERNAL_CreateBackbuffer(
27842831
parameters->deviceWindowHandle,
27852832
NULL
27862833
);
2834+
#if SDL_MAJOR_VERSION >= 3
27872835
swapchainData = (D3D11SwapchainData*) SDL_GetProperty(
27882836
SDL_GetWindowProperties(parameters->deviceWindowHandle),
27892837
WINDOW_SWAPCHAIN_DATA,
27902838
NULL
27912839
);
2840+
#else
2841+
swapchainData = (D3D11SwapchainData*) SDL_GetWindowData(
2842+
(SDL_Window*) parameters->deviceWindowHandle,
2843+
WINDOW_SWAPCHAIN_DATA
2844+
);
2845+
#endif
27922846
}
27932847
else
27942848
{
@@ -5214,6 +5268,9 @@ static uint8_t D3D11_PrepareWindowAttributes(uint32_t *flags)
52145268
}
52155269

52165270
/* No window flags required */
5271+
#if SDL_MAJOR_VERSION < 3
5272+
SDL_SetHint(SDL_HINT_VIDEO_EXTERNAL_CONTEXT, "1");
5273+
#endif
52175274
#ifdef FNA3D_DXVK_NATIVE
52185275
/* ... unless this is DXVK */
52195276
*flags = SDL_WINDOW_VULKAN;

0 commit comments

Comments
 (0)