mirror of
https://github.com/reactos/reactos.git
synced 2025-02-23 17:05:46 +00:00
[XINPUT1_3] Sync with Wine Staging 1.9.23. CORE-12409
svn path=/trunk/; revision=73309
This commit is contained in:
parent
ed898f91d4
commit
fef2774bdd
3 changed files with 78 additions and 47 deletions
|
@ -1,4 +1,4 @@
|
|||
1 stdcall DllMain(long long ptr)
|
||||
1 stdcall -private DllMain(long long ptr)
|
||||
2 stdcall XInputGetState(long ptr)
|
||||
3 stdcall XInputSetState(long ptr)
|
||||
4 stdcall XInputGetCapabilities(long long ptr)
|
||||
|
@ -6,3 +6,4 @@
|
|||
6 stdcall XInputGetDSoundAudioDeviceGuids(long ptr ptr)
|
||||
7 stdcall XInputGetBatteryInformation(long long ptr)
|
||||
8 stdcall XInputGetKeystroke(long long ptr)
|
||||
100 stdcall XInputGetStateEx(long ptr)
|
||||
|
|
|
@ -29,14 +29,20 @@
|
|||
|
||||
#include <xinput.h>
|
||||
|
||||
/* Not defined in the headers, used only by XInputGetStateEx */
|
||||
#define XINPUT_GAMEPAD_GUIDE 0x0400
|
||||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(xinput);
|
||||
|
||||
struct
|
||||
{
|
||||
BOOL connected;
|
||||
} controllers[XUSER_MAX_COUNT];
|
||||
|
||||
BOOL WINAPI DllMain(HINSTANCE inst, DWORD reason, LPVOID reserved)
|
||||
{
|
||||
switch(reason)
|
||||
{
|
||||
case DLL_WINE_PREATTACH:
|
||||
return FALSE; /* prefer native version */
|
||||
case DLL_PROCESS_ATTACH:
|
||||
DisableThreadLibraryCalls(inst);
|
||||
break;
|
||||
|
@ -50,83 +56,107 @@ void WINAPI XInputEnable(BOOL enable)
|
|||
to the controllers. Setting to true will send the last vibration
|
||||
value (sent to XInputSetState) to the controller and allow messages to
|
||||
be sent */
|
||||
FIXME("(%d) Stub!\n", enable);
|
||||
FIXME("(enable %d) Stub!\n", enable);
|
||||
}
|
||||
|
||||
DWORD WINAPI XInputSetState(DWORD dwUserIndex, XINPUT_VIBRATION* pVibration)
|
||||
DWORD WINAPI XInputSetState(DWORD index, XINPUT_VIBRATION* vibration)
|
||||
{
|
||||
FIXME("(%d %p) Stub!\n", dwUserIndex, pVibration);
|
||||
FIXME("(index %u, vibration %p) Stub!\n", index, vibration);
|
||||
|
||||
if (dwUserIndex < XUSER_MAX_COUNT)
|
||||
{
|
||||
return ERROR_DEVICE_NOT_CONNECTED;
|
||||
/* If controller exists then return ERROR_SUCCESS */
|
||||
}
|
||||
if (index >= XUSER_MAX_COUNT)
|
||||
return ERROR_BAD_ARGUMENTS;
|
||||
if (!controllers[index].connected)
|
||||
return ERROR_DEVICE_NOT_CONNECTED;
|
||||
|
||||
return ERROR_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
DWORD WINAPI DECLSPEC_HOTPATCH XInputGetState(DWORD dwUserIndex, XINPUT_STATE* pState)
|
||||
DWORD WINAPI DECLSPEC_HOTPATCH XInputGetState(DWORD index, XINPUT_STATE* state)
|
||||
{
|
||||
union
|
||||
{
|
||||
XINPUT_STATE state;
|
||||
XINPUT_STATE_EX state_ex;
|
||||
} xinput;
|
||||
DWORD ret;
|
||||
static int warn_once;
|
||||
|
||||
if (!warn_once++)
|
||||
FIXME("(index %u, state %p) Stub!\n", index, state);
|
||||
|
||||
ret = XInputGetStateEx(index, &xinput.state_ex);
|
||||
if (ret != ERROR_SUCCESS)
|
||||
return ret;
|
||||
|
||||
/* The main difference between this and the Ex version is the media guide button */
|
||||
xinput.state.Gamepad.wButtons &= ~XINPUT_GAMEPAD_GUIDE;
|
||||
*state = xinput.state;
|
||||
|
||||
return ERROR_SUCCESS;
|
||||
}
|
||||
|
||||
DWORD WINAPI DECLSPEC_HOTPATCH XInputGetStateEx(DWORD index, XINPUT_STATE_EX* state_ex)
|
||||
{
|
||||
static int warn_once;
|
||||
|
||||
if (!warn_once++)
|
||||
FIXME("(%u %p)\n", dwUserIndex, pState);
|
||||
FIXME("(index %u, state %p) Stub!\n", index, state_ex);
|
||||
|
||||
if (dwUserIndex < XUSER_MAX_COUNT)
|
||||
{
|
||||
return ERROR_DEVICE_NOT_CONNECTED;
|
||||
/* If controller exists then return ERROR_SUCCESS */
|
||||
}
|
||||
if (index >= XUSER_MAX_COUNT)
|
||||
return ERROR_BAD_ARGUMENTS;
|
||||
if (!controllers[index].connected)
|
||||
return ERROR_DEVICE_NOT_CONNECTED;
|
||||
|
||||
return ERROR_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
DWORD WINAPI XInputGetKeystroke(DWORD dwUserIndex, DWORD dwReserve, PXINPUT_KEYSTROKE pKeystroke)
|
||||
DWORD WINAPI XInputGetKeystroke(DWORD index, DWORD reserved, PXINPUT_KEYSTROKE keystroke)
|
||||
{
|
||||
FIXME("(%d %d %p) Stub!\n", dwUserIndex, dwReserve, pKeystroke);
|
||||
FIXME("(index %u, reserved %u, keystroke %p) Stub!\n", index, reserved, keystroke);
|
||||
|
||||
if (dwUserIndex < XUSER_MAX_COUNT)
|
||||
{
|
||||
return ERROR_DEVICE_NOT_CONNECTED;
|
||||
/* If controller exists then return ERROR_SUCCESS */
|
||||
}
|
||||
if (index >= XUSER_MAX_COUNT)
|
||||
return ERROR_BAD_ARGUMENTS;
|
||||
if (!controllers[index].connected)
|
||||
return ERROR_DEVICE_NOT_CONNECTED;
|
||||
|
||||
return ERROR_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
DWORD WINAPI XInputGetCapabilities(DWORD dwUserIndex, DWORD dwFlags, XINPUT_CAPABILITIES* pCapabilities)
|
||||
DWORD WINAPI XInputGetCapabilities(DWORD index, DWORD flags, XINPUT_CAPABILITIES* capabilities)
|
||||
{
|
||||
static int warn_once;
|
||||
|
||||
if (!warn_once++)
|
||||
FIXME("(%d %d %p)\n", dwUserIndex, dwFlags, pCapabilities);
|
||||
FIXME("(index %u, flags 0x%x, capabilities %p) Stub!\n", index, flags, capabilities);
|
||||
|
||||
if (dwUserIndex < XUSER_MAX_COUNT)
|
||||
{
|
||||
return ERROR_DEVICE_NOT_CONNECTED;
|
||||
/* If controller exists then return ERROR_SUCCESS */
|
||||
}
|
||||
if (index >= XUSER_MAX_COUNT)
|
||||
return ERROR_BAD_ARGUMENTS;
|
||||
if (!controllers[index].connected)
|
||||
return ERROR_DEVICE_NOT_CONNECTED;
|
||||
|
||||
return ERROR_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
DWORD WINAPI XInputGetDSoundAudioDeviceGuids(DWORD dwUserIndex, GUID* pDSoundRenderGuid, GUID* pDSoundCaptureGuid)
|
||||
DWORD WINAPI XInputGetDSoundAudioDeviceGuids(DWORD index, GUID* render_guid, GUID* capture_guid)
|
||||
{
|
||||
FIXME("(%d %p %p) Stub!\n", dwUserIndex, pDSoundRenderGuid, pDSoundCaptureGuid);
|
||||
FIXME("(index %u, render guid %p, capture guid %p) Stub!\n", index, render_guid, capture_guid);
|
||||
|
||||
if (dwUserIndex < XUSER_MAX_COUNT)
|
||||
{
|
||||
return ERROR_DEVICE_NOT_CONNECTED;
|
||||
/* If controller exists then return ERROR_SUCCESS */
|
||||
}
|
||||
if (index >= XUSER_MAX_COUNT)
|
||||
return ERROR_BAD_ARGUMENTS;
|
||||
if (!controllers[index].connected)
|
||||
return ERROR_DEVICE_NOT_CONNECTED;
|
||||
|
||||
return ERROR_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
DWORD WINAPI XInputGetBatteryInformation(DWORD dwUserIndex, BYTE deviceType, XINPUT_BATTERY_INFORMATION* pBatteryInfo)
|
||||
DWORD WINAPI XInputGetBatteryInformation(DWORD index, BYTE type, XINPUT_BATTERY_INFORMATION* battery)
|
||||
{
|
||||
FIXME("(%d %u %p) Stub!\n", dwUserIndex, deviceType, pBatteryInfo);
|
||||
FIXME("(index %u, type %u, battery %p) Stub!\n", index, type, battery);
|
||||
|
||||
if (dwUserIndex < XUSER_MAX_COUNT)
|
||||
{
|
||||
return ERROR_DEVICE_NOT_CONNECTED;
|
||||
/* If controller exists then return ERROR_SUCCESS */
|
||||
}
|
||||
if (index >= XUSER_MAX_COUNT)
|
||||
return ERROR_BAD_ARGUMENTS;
|
||||
if (!controllers[index].connected)
|
||||
return ERROR_DEVICE_NOT_CONNECTED;
|
||||
|
||||
return ERROR_NOT_SUPPORTED;
|
||||
}
|
||||
|
|
|
@ -216,7 +216,7 @@ reactos/dll/win32/wtsapi32 # Synced to WineStaging-1.9.11
|
|||
reactos/dll/win32/wuapi # Synced to WineStaging-1.9.11
|
||||
reactos/dll/win32/xinput1_1 # Synced to WineStaging-1.9.11
|
||||
reactos/dll/win32/xinput1_2 # Synced to WineStaging-1.9.11
|
||||
reactos/dll/win32/xinput1_3 # Synced to WineStaging-1.9.16
|
||||
reactos/dll/win32/xinput1_3 # Synced to WineStaging-1.9.23
|
||||
reactos/dll/win32/xinput9_1_0 # Synced to WineStaging-1.9.11
|
||||
reactos/dll/win32/xmllite # Synced to WineStaging-1.9.16
|
||||
|
||||
|
|
Loading…
Reference in a new issue