rpcsx/rpcs3/XInputPadHandler.h

34 lines
772 B
C
Raw Normal View History

2014-05-24 21:05:00 +02:00
#pragma once
#include "Emu/Io/PadHandler.h"
#include <Xinput.h>
2016-02-01 22:51:09 +01:00
class XInputPadHandler final : public PadHandlerBase
2014-05-24 21:05:00 +02:00
{
public:
XInputPadHandler();
~XInputPadHandler();
void Init(const u32 max_connect) override;
2017-04-29 03:02:58 +02:00
void SetRumble(const u32 pad, u8 largeMotor, bool smallMotor) override;
2016-02-01 22:51:09 +01:00
void Close();
2014-05-24 21:05:00 +02:00
private:
typedef void (WINAPI * PFN_XINPUTENABLE)(BOOL);
typedef DWORD (WINAPI * PFN_XINPUTGETSTATE)(DWORD, XINPUT_STATE *);
2017-04-29 03:02:58 +02:00
typedef DWORD (WINAPI * PFN_XINPUTSETSTATE)(DWORD, XINPUT_VIBRATION *);
2014-05-24 21:05:00 +02:00
private:
DWORD ThreadProcedure();
static DWORD WINAPI ThreadProcProxy(LPVOID parameter);
private:
mutable bool active;
HANDLE thread;
HMODULE library;
PFN_XINPUTGETSTATE xinputGetState;
2017-04-29 03:02:58 +02:00
PFN_XINPUTSETSTATE xinputSetState;
2014-05-24 21:05:00 +02:00
PFN_XINPUTENABLE xinputEnable;
};