1 /*
2  *  Copyright (C) 2014-2020 Garrett Brown
3  *  Copyright (C) 2014-2020 Team Kodi
4  *
5  *  SPDX-License-Identifier: GPL-2.0-or-later
6  *  See LICENSE.md for more information.
7  */
8 
9 #pragma once
10 
11 #include "api/Joystick.h"
12 
13 #define DIRECTINPUT_VERSION 0x0800
14 #include <dinput.h>
15 
16 namespace JOYSTICK
17 {
18   class CJoystickDirectInput : public CJoystick
19   {
20   public:
21     CJoystickDirectInput(GUID                           deviceGuid,
22                          LPDIRECTINPUTDEVICE8           joystickDevice,
23                          const TCHAR                    *strName);
24 
25     virtual ~CJoystickDirectInput(void);
26 
27     virtual bool Equals(const CJoystick* rhs) const override;
28 
29     virtual bool Initialize(void) override;
30 
31   protected:
32     virtual bool ScanEvents(void) override;
33 
34   private:
35     static BOOL CALLBACK EnumObjectsCallback(const DIDEVICEOBJECTINSTANCE *pdidoi, VOID *pContext);
36 
37     GUID m_deviceGuid;
38     LPDIRECTINPUTDEVICE8 m_joystickDevice;
39     bool m_bAcquired = false;
40   };
41 }
42