mirror of
https://github.com/encounter/SDL.git
synced 2025-05-22 15:21:27 +00:00
Fix compatibility with Windows XP
This commit is contained in:
parent
911524da45
commit
10e1ef00e2
@ -719,6 +719,13 @@ D3D12_CreateDeviceResources(SDL_Renderer* renderer)
|
|||||||
typedef HRESULT(WINAPI* PFN_CREATE_DXGI_FACTORY)(UINT flags, REFIID riid, void** ppFactory);
|
typedef HRESULT(WINAPI* PFN_CREATE_DXGI_FACTORY)(UINT flags, REFIID riid, void** ppFactory);
|
||||||
PFN_CREATE_DXGI_FACTORY CreateDXGIFactoryFunc;
|
PFN_CREATE_DXGI_FACTORY CreateDXGIFactoryFunc;
|
||||||
PFN_D3D12_CREATE_DEVICE D3D12CreateDeviceFunc;
|
PFN_D3D12_CREATE_DEVICE D3D12CreateDeviceFunc;
|
||||||
|
#endif
|
||||||
|
#ifndef __GDK__
|
||||||
|
HMODULE kernel32;
|
||||||
|
typedef HANDLE(WINAPI* PFN_CREATE_EVENT_EX)(LPSECURITY_ATTRIBUTES lpEventAttributes, LPCWSTR lpName, DWORD dwFlags, DWORD dwDesiredAccess);
|
||||||
|
PFN_CREATE_EVENT_EX CreateEventExFunc;
|
||||||
|
#else
|
||||||
|
#define CreateEventExFunc CreateEventEx
|
||||||
#endif
|
#endif
|
||||||
D3D12_RenderData* data = (D3D12_RenderData*)renderer->driverdata;
|
D3D12_RenderData* data = (D3D12_RenderData*)renderer->driverdata;
|
||||||
ID3D12Device* d3dDevice = NULL;
|
ID3D12Device* d3dDevice = NULL;
|
||||||
@ -748,6 +755,21 @@ D3D12_CreateDeviceResources(SDL_Renderer* renderer)
|
|||||||
/* See if we need debug interfaces */
|
/* See if we need debug interfaces */
|
||||||
createDebug = SDL_GetHintBoolean(SDL_HINT_RENDER_DIRECT3D11_DEBUG, SDL_FALSE);
|
createDebug = SDL_GetHintBoolean(SDL_HINT_RENDER_DIRECT3D11_DEBUG, SDL_FALSE);
|
||||||
|
|
||||||
|
#ifndef __GDK__
|
||||||
|
/* CreateEventEx() arrived in Vista, so we need to load it with GetProcAddress for XP. */
|
||||||
|
kernel32 = GetModuleHandle(TEXT("kernel32.dll"));
|
||||||
|
if (!kernel32) {
|
||||||
|
result = E_FAIL;
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
CreateEventExFunc = (PFN_CREATE_EVENT_EX) GetProcAddress(kernel32, "CreateEventExW");
|
||||||
|
if (!CreateEventExFunc) {
|
||||||
|
result = E_FAIL;
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#if !defined(__XBOXONE__) && !defined(__XBOXSERIES__)
|
#if !defined(__XBOXONE__) && !defined(__XBOXSERIES__)
|
||||||
data->hDXGIMod = SDL_LoadObject("dxgi.dll");
|
data->hDXGIMod = SDL_LoadObject("dxgi.dll");
|
||||||
if (!data->hDXGIMod) {
|
if (!data->hDXGIMod) {
|
||||||
@ -999,7 +1021,7 @@ D3D12_CreateDeviceResources(SDL_Renderer* renderer)
|
|||||||
|
|
||||||
data->fenceValue++;
|
data->fenceValue++;
|
||||||
|
|
||||||
data->fenceEvent = CreateEventEx(NULL, NULL, 0, EVENT_MODIFY_STATE | SYNCHRONIZE);
|
data->fenceEvent = CreateEventExFunc(NULL, NULL, 0, EVENT_MODIFY_STATE | SYNCHRONIZE);
|
||||||
if (!data->fenceEvent) {
|
if (!data->fenceEvent) {
|
||||||
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("CreateEventEx"), result);
|
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("CreateEventEx"), result);
|
||||||
goto done;
|
goto done;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user