21#include "../../SDL_internal.h"
29XInputGetState_t SDL_XInputGetState =
NULL;
30XInputSetState_t SDL_XInputSetState =
NULL;
31XInputGetCapabilities_t SDL_XInputGetCapabilities =
NULL;
32XInputGetBatteryInformation_t SDL_XInputGetBatteryInformation =
NULL;
33DWORD SDL_XInputVersion = 0;
35static HANDLE s_pXInputDLL = 0;
36static int s_XInputDLLRefCount = 0;
42WIN_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;
68WIN_UnloadXInputDLL(
void)
75WIN_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();
123WIN_UnloadXInputDLL(
void)
127 if (--s_XInputDLLRefCount == 0) {
128 FreeLibrary(s_pXInputDLL);
#define SDL_assert(condition)