mirror of
https://github.com/Relintai/sdl2_frt.git
synced 2024-12-20 22:16:49 +01:00
Made the latest XInput + Haptic changes compile and run on WinRT
Notes: - Support for the 'Guide' button does not seem to be possible, as XInputGetStateEx is not available on WinRT. - Haptic support appears to be working on WinRT now! - SDL/WinRT does not allow calls to LoadLibrary or LoadLibraryEx. The calls to those were removed by this change, but only when compiling for WinRT. Non-WinRT Windows will continue to detect and load XInput via LoadLibrary and GetProcAddress calls.
This commit is contained in:
parent
b79e7f32cc
commit
cf4ff728a0
@ -234,6 +234,7 @@
|
|||||||
<ClInclude Include="..\..\src\haptic\SDL_syshaptic.h" />
|
<ClInclude Include="..\..\src\haptic\SDL_syshaptic.h" />
|
||||||
<ClInclude Include="..\..\src\joystick\SDL_joystick_c.h" />
|
<ClInclude Include="..\..\src\joystick\SDL_joystick_c.h" />
|
||||||
<ClInclude Include="..\..\src\joystick\SDL_sysjoystick.h" />
|
<ClInclude Include="..\..\src\joystick\SDL_sysjoystick.h" />
|
||||||
|
<ClInclude Include="..\..\src\joystick\windows\SDL_xinputjoystick_c.h" />
|
||||||
<ClInclude Include="..\..\src\render\direct3d11\SDL_render_winrt.h" />
|
<ClInclude Include="..\..\src\render\direct3d11\SDL_render_winrt.h" />
|
||||||
<ClInclude Include="..\..\src\render\mmx.h" />
|
<ClInclude Include="..\..\src\render\mmx.h" />
|
||||||
<ClInclude Include="..\..\src\render\SDL_d3dmath.h" />
|
<ClInclude Include="..\..\src\render\SDL_d3dmath.h" />
|
||||||
@ -333,6 +334,7 @@
|
|||||||
<ClCompile Include="..\..\src\joystick\dummy\SDL_sysjoystick.c" />
|
<ClCompile Include="..\..\src\joystick\dummy\SDL_sysjoystick.c" />
|
||||||
<ClCompile Include="..\..\src\joystick\SDL_gamecontroller.c" />
|
<ClCompile Include="..\..\src\joystick\SDL_gamecontroller.c" />
|
||||||
<ClCompile Include="..\..\src\joystick\SDL_joystick.c" />
|
<ClCompile Include="..\..\src\joystick\SDL_joystick.c" />
|
||||||
|
<ClCompile Include="..\..\src\joystick\windows\SDL_xinputjoystick.c" />
|
||||||
<ClCompile Include="..\..\src\loadso\windows\SDL_sysloadso.c" />
|
<ClCompile Include="..\..\src\loadso\windows\SDL_sysloadso.c" />
|
||||||
<ClCompile Include="..\..\src\power\SDL_power.c" />
|
<ClCompile Include="..\..\src\power\SDL_power.c" />
|
||||||
<ClCompile Include="..\..\src\power\winrt\SDL_syspower.cpp" />
|
<ClCompile Include="..\..\src\power\winrt\SDL_syspower.cpp" />
|
||||||
|
@ -357,6 +357,9 @@
|
|||||||
<ClInclude Include="..\..\src\video\winrt\SDL_winrtmessagebox.h">
|
<ClInclude Include="..\..\src\video\winrt\SDL_winrtmessagebox.h">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\src\joystick\windows\SDL_xinputjoystick_c.h">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="..\..\src\atomic\SDL_atomic.c">
|
<ClCompile Include="..\..\src\atomic\SDL_atomic.c">
|
||||||
@ -644,5 +647,8 @@
|
|||||||
<ClCompile Include="..\..\src\video\winrt\SDL_winrtmessagebox.cpp">
|
<ClCompile Include="..\..\src\video\winrt\SDL_winrtmessagebox.cpp">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\src\joystick\windows\SDL_xinputjoystick.c">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
@ -100,6 +100,7 @@
|
|||||||
<ClInclude Include="..\..\src\joystick\SDL_gamecontrollerdb.h" />
|
<ClInclude Include="..\..\src\joystick\SDL_gamecontrollerdb.h" />
|
||||||
<ClInclude Include="..\..\src\joystick\SDL_joystick_c.h" />
|
<ClInclude Include="..\..\src\joystick\SDL_joystick_c.h" />
|
||||||
<ClInclude Include="..\..\src\joystick\SDL_sysjoystick.h" />
|
<ClInclude Include="..\..\src\joystick\SDL_sysjoystick.h" />
|
||||||
|
<ClInclude Include="..\..\src\joystick\windows\SDL_xinputjoystick_c.h" />
|
||||||
<ClInclude Include="..\..\src\render\direct3d11\SDL_render_winrt.h" />
|
<ClInclude Include="..\..\src\render\direct3d11\SDL_render_winrt.h" />
|
||||||
<ClInclude Include="..\..\src\render\mmx.h" />
|
<ClInclude Include="..\..\src\render\mmx.h" />
|
||||||
<ClInclude Include="..\..\src\render\opengles2\SDL_gles2funcs.h" />
|
<ClInclude Include="..\..\src\render\opengles2\SDL_gles2funcs.h" />
|
||||||
@ -204,7 +205,7 @@
|
|||||||
<ClCompile Include="..\..\src\joystick\dummy\SDL_sysjoystick.c" />
|
<ClCompile Include="..\..\src\joystick\dummy\SDL_sysjoystick.c" />
|
||||||
<ClCompile Include="..\..\src\joystick\SDL_gamecontroller.c" />
|
<ClCompile Include="..\..\src\joystick\SDL_gamecontroller.c" />
|
||||||
<ClCompile Include="..\..\src\joystick\SDL_joystick.c" />
|
<ClCompile Include="..\..\src\joystick\SDL_joystick.c" />
|
||||||
<ClCompile Include="..\..\src\joystick\winrt\SDL_xinputjoystick.c" />
|
<ClCompile Include="..\..\src\joystick\windows\SDL_xinputjoystick.c" />
|
||||||
<ClCompile Include="..\..\src\loadso\windows\SDL_sysloadso.c" />
|
<ClCompile Include="..\..\src\loadso\windows\SDL_sysloadso.c" />
|
||||||
<ClCompile Include="..\..\src\power\SDL_power.c" />
|
<ClCompile Include="..\..\src\power\SDL_power.c" />
|
||||||
<ClCompile Include="..\..\src\power\winrt\SDL_syspower.cpp" />
|
<ClCompile Include="..\..\src\power\winrt\SDL_syspower.cpp" />
|
||||||
|
@ -381,6 +381,9 @@
|
|||||||
<ClInclude Include="..\..\src\video\winrt\SDL_winrtvideo_cpp.h">
|
<ClInclude Include="..\..\src\video\winrt\SDL_winrtvideo_cpp.h">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\src\joystick\windows\SDL_xinputjoystick_c.h">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="..\..\src\atomic\SDL_atomic.c">
|
<ClCompile Include="..\..\src\atomic\SDL_atomic.c">
|
||||||
@ -485,9 +488,6 @@
|
|||||||
<ClCompile Include="..\..\src\joystick\SDL_joystick.c">
|
<ClCompile Include="..\..\src\joystick\SDL_joystick.c">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\src\joystick\winrt\SDL_xinputjoystick.c">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="..\..\src\loadso\windows\SDL_sysloadso.c">
|
<ClCompile Include="..\..\src\loadso\windows\SDL_sysloadso.c">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
@ -683,5 +683,8 @@
|
|||||||
<ClCompile Include="..\..\src\video\winrt\SDL_winrtvideo.cpp">
|
<ClCompile Include="..\..\src\video\winrt\SDL_winrtvideo.cpp">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\src\joystick\windows\SDL_xinputjoystick.c">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
@ -78,7 +78,9 @@ typedef unsigned int uintptr_t;
|
|||||||
|
|
||||||
/* Useful headers */
|
/* Useful headers */
|
||||||
#define HAVE_DXGI_H 1
|
#define HAVE_DXGI_H 1
|
||||||
|
#if WINAPI_FAMILY != WINAPI_FAMILY_PHONE_APP
|
||||||
#define HAVE_XINPUT_H 1
|
#define HAVE_XINPUT_H 1
|
||||||
|
#endif
|
||||||
#define HAVE_LIBC 1
|
#define HAVE_LIBC 1
|
||||||
#define HAVE_STDIO_H 1
|
#define HAVE_STDIO_H 1
|
||||||
#define STDC_HEADERS 1
|
#define STDC_HEADERS 1
|
||||||
|
@ -35,6 +35,40 @@ static HANDLE s_pXInputDLL = 0;
|
|||||||
static int s_XInputDLLRefCount = 0;
|
static int s_XInputDLLRefCount = 0;
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __WINRT__
|
||||||
|
|
||||||
|
int
|
||||||
|
WIN_LoadXInputDLL(void)
|
||||||
|
{
|
||||||
|
/* Getting handles to system dlls (via LoadLibrary and its variants) is not
|
||||||
|
* supported on WinRT, thus, pointers to XInput's functions can't be
|
||||||
|
* retrieved via GetProcAddress.
|
||||||
|
*
|
||||||
|
* When on WinRT, assume that XInput is already loaded, and directly map
|
||||||
|
* its XInput.h-declared functions to the SDL_XInput* set of function
|
||||||
|
* pointers.
|
||||||
|
*
|
||||||
|
* Side-note: XInputGetStateEx is not available for use in WinRT.
|
||||||
|
* This seems to mean that support for the guide button is not available
|
||||||
|
* in WinRT, unfortunately.
|
||||||
|
*/
|
||||||
|
SDL_XInputGetState = (XInputGetState_t)XInputGetState;
|
||||||
|
SDL_XInputSetState = (XInputSetState_t)XInputSetState;
|
||||||
|
SDL_XInputGetCapabilities = (XInputGetCapabilities_t)XInputGetCapabilities;
|
||||||
|
|
||||||
|
/* XInput 1.4 ships with Windows 8 and 8.1: */
|
||||||
|
SDL_XInputVersion = (1 << 16) | 4;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
WIN_UnloadXInputDLL(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
#else /* !__WINRT__ */
|
||||||
|
|
||||||
int
|
int
|
||||||
WIN_LoadXInputDLL(void)
|
WIN_LoadXInputDLL(void)
|
||||||
{
|
{
|
||||||
@ -89,6 +123,7 @@ WIN_UnloadXInputDLL(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif /* __WINRT__ */
|
||||||
#endif /* HAVE_XINPUT_H */
|
#endif /* HAVE_XINPUT_H */
|
||||||
|
|
||||||
/* vi: set ts=4 sw=4 expandtab: */
|
/* vi: set ts=4 sw=4 expandtab: */
|
||||||
|
Loading…
Reference in New Issue
Block a user