21 #include "../../SDL_internal.h" 29 XInputGetState_t SDL_XInputGetState =
NULL;
30 XInputSetState_t SDL_XInputSetState =
NULL;
31 XInputGetCapabilities_t SDL_XInputGetCapabilities =
NULL;
32 XInputGetBatteryInformation_t SDL_XInputGetBatteryInformation =
NULL;
33 DWORD SDL_XInputVersion = 0;
35 static HANDLE s_pXInputDLL = 0;
36 static int s_XInputDLLRefCount = 0;
42 WIN_LoadXInputDLL(
void)
56 SDL_XInputGetState = (XInputGetState_t)XInputGetState;
57 SDL_XInputSetState = (XInputSetState_t)XInputSetState;
58 SDL_XInputGetCapabilities = (XInputGetCapabilities_t)XInputGetCapabilities;
59 SDL_XInputGetBatteryInformation = (XInputGetBatteryInformation_t)XInputGetBatteryInformation;
62 SDL_XInputVersion = (1 << 16) | 4;
68 WIN_UnloadXInputDLL(
void)
75 WIN_LoadXInputDLL(
void)
81 s_XInputDLLRefCount++;
85 version = (1 << 16) | 4;
86 s_pXInputDLL = LoadLibrary(L
"XInput1_4.dll");
88 version = (1 << 16) | 3;
89 s_pXInputDLL = LoadLibrary(L
"XInput1_3.dll");
92 s_pXInputDLL = LoadLibrary(L
"bin\\XInput1_3.dll");
96 s_pXInputDLL = LoadLibrary(L
"XInput9_1_0.dll");
103 SDL_XInputVersion = version;
104 s_XInputDLLRefCount = 1;
107 SDL_XInputGetState = (XInputGetState_t)GetProcAddress((HMODULE)s_pXInputDLL, (LPCSTR)100);
108 if (!SDL_XInputGetState) {
109 SDL_XInputGetState = (XInputGetState_t)GetProcAddress((HMODULE)s_pXInputDLL,
"XInputGetState");
111 SDL_XInputSetState = (XInputSetState_t)GetProcAddress((HMODULE)s_pXInputDLL,
"XInputSetState");
112 SDL_XInputGetCapabilities = (XInputGetCapabilities_t)GetProcAddress((HMODULE)s_pXInputDLL,
"XInputGetCapabilities");
113 SDL_XInputGetBatteryInformation = (XInputGetBatteryInformation_t)GetProcAddress( (HMODULE)s_pXInputDLL,
"XInputGetBatteryInformation" );
114 if (!SDL_XInputGetState || !SDL_XInputSetState || !SDL_XInputGetCapabilities) {
115 WIN_UnloadXInputDLL();
123 WIN_UnloadXInputDLL(
void)
127 if (--s_XInputDLLRefCount == 0) {
128 FreeLibrary(s_pXInputDLL);
#define SDL_assert(condition)