diff options
| author | Matthew Parlane <parlane@gmail.com> | 2016-06-26 00:17:08 +1200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2016-06-26 00:17:08 +1200 |
| commit | a7448271a9203aea26f05f62b75e43c5e5860e98 (patch) | |
| tree | 5e43d6ee5fcfbe74a6bacf1eba81ee0a7a44fa14 /Source/Core/InputCommon/ControllerInterface/DInput | |
| parent | 2f9a911c540473bb6cea5a9891a6a281aa2f3750 (diff) | |
| parent | 9b075556ea826699800d9478d1eed3a80368c348 (diff) | |
Merge pull request #3892 from leoetlino/ciface-synchronisation
ControllerInterface: Add synchronisation
Diffstat (limited to 'Source/Core/InputCommon/ControllerInterface/DInput')
6 files changed, 21 insertions, 31 deletions
diff --git a/Source/Core/InputCommon/ControllerInterface/DInput/DInput.cpp b/Source/Core/InputCommon/ControllerInterface/DInput/DInput.cpp index 09227b5932..83394852af 100644 --- a/Source/Core/InputCommon/ControllerInterface/DInput/DInput.cpp +++ b/Source/Core/InputCommon/ControllerInterface/DInput/DInput.cpp @@ -2,9 +2,9 @@ // Licensed under GPLv2+ // Refer to the license.txt file included. -#include "Common/StringUtil.h" - #include "InputCommon/ControllerInterface/DInput/DInput.h" +#include "Common/StringUtil.h" +#include "InputCommon/ControllerInterface/ControllerInterface.h" #include "InputCommon/ControllerInterface/DInput/DInputJoystick.h" #include "InputCommon/ControllerInterface/DInput/DInputKeyboardMouse.h" @@ -44,7 +44,7 @@ std::string GetDeviceName(const LPDIRECTINPUTDEVICE8 device) return result; } -void Init(std::vector<Core::Device*>& devices, HWND hwnd) +void Init(HWND hwnd) { IDirectInput8* idi8; if (FAILED(DirectInput8Create(GetModuleHandle(nullptr), DIRECTINPUT_VERSION, IID_IDirectInput8, @@ -53,8 +53,8 @@ void Init(std::vector<Core::Device*>& devices, HWND hwnd) return; } - InitKeyboardMouse(idi8, devices, hwnd); - InitJoystick(idi8, devices, hwnd); + InitKeyboardMouse(idi8, hwnd); + InitJoystick(idi8, hwnd); idi8->Release(); } diff --git a/Source/Core/InputCommon/ControllerInterface/DInput/DInput.h b/Source/Core/InputCommon/ControllerInterface/DInput/DInput.h index 2f5e2f83a7..94e4cb4fe3 100644 --- a/Source/Core/InputCommon/ControllerInterface/DInput/DInput.h +++ b/Source/Core/InputCommon/ControllerInterface/DInput/DInput.h @@ -10,7 +10,6 @@ #include <windows.h> #include "InputCommon/ControllerInterface/DInput/DInput8.h" -#include "InputCommon/ControllerInterface/Device.h" namespace ciface { @@ -21,6 +20,6 @@ BOOL CALLBACK DIEnumDeviceObjectsCallback(LPCDIDEVICEOBJECTINSTANCE lpddoi, LPVO BOOL CALLBACK DIEnumDevicesCallback(LPCDIDEVICEINSTANCE lpddi, LPVOID pvRef); std::string GetDeviceName(const LPDIRECTINPUTDEVICE8 device); -void Init(std::vector<Core::Device*>& devices, HWND hwnd); +void Init(HWND hwnd); } } diff --git a/Source/Core/InputCommon/ControllerInterface/DInput/DInputJoystick.cpp b/Source/Core/InputCommon/ControllerInterface/DInput/DInputJoystick.cpp index bf2c1f3e7e..ea059fde73 100644 --- a/Source/Core/InputCommon/ControllerInterface/DInput/DInputJoystick.cpp +++ b/Source/Core/InputCommon/ControllerInterface/DInput/DInputJoystick.cpp @@ -6,6 +6,7 @@ #include <map> #include <sstream> +#include "InputCommon/ControllerInterface/ControllerInterface.h" #include "InputCommon/ControllerInterface/DInput/DInput.h" #include "InputCommon/ControllerInterface/DInput/DInputJoystick.h" #include "InputCommon/ControllerInterface/DInput/XInputFilter.h" @@ -16,7 +17,7 @@ namespace DInput { #define DATA_BUFFER_SIZE 32 -void InitJoystick(IDirectInput8* const idi8, std::vector<Core::Device*>& devices, HWND hwnd) +void InitJoystick(IDirectInput8* const idi8, HWND hwnd) { std::list<DIDEVICEINSTANCE> joysticks; idi8->EnumDevices(DI8DEVCLASS_GAMECTRL, DIEnumDevicesCallback, (LPVOID)&joysticks, @@ -60,7 +61,7 @@ void InitJoystick(IDirectInput8* const idi8, std::vector<Core::Device*>& devices Joystick* js = new Joystick(/*&*i, */ js_device, name_counts[joystick.tszInstanceName]++); // only add if it has some inputs/outputs if (js->Inputs().size() || js->Outputs().size()) - devices.push_back(js); + g_controller_interface.AddDevice(js); else delete js; } diff --git a/Source/Core/InputCommon/ControllerInterface/DInput/DInputJoystick.h b/Source/Core/InputCommon/ControllerInterface/DInput/DInputJoystick.h index 9a14e910de..d66c28cfba 100644 --- a/Source/Core/InputCommon/ControllerInterface/DInput/DInputJoystick.h +++ b/Source/Core/InputCommon/ControllerInterface/DInput/DInputJoystick.h @@ -11,7 +11,7 @@ namespace ciface { namespace DInput { -void InitJoystick(IDirectInput8* const idi8, std::vector<Core::Device*>& devices, HWND hwnd); +void InitJoystick(IDirectInput8* const idi8, HWND hwnd); class Joystick : public ForceFeedback::ForceFeedbackDevice { diff --git a/Source/Core/InputCommon/ControllerInterface/DInput/DInputKeyboardMouse.cpp b/Source/Core/InputCommon/ControllerInterface/DInput/DInputKeyboardMouse.cpp index 92c8514825..fc02238980 100644 --- a/Source/Core/InputCommon/ControllerInterface/DInput/DInputKeyboardMouse.cpp +++ b/Source/Core/InputCommon/ControllerInterface/DInput/DInputKeyboardMouse.cpp @@ -4,6 +4,7 @@ #include <algorithm> +#include "InputCommon/ControllerInterface/ControllerInterface.h" #include "InputCommon/ControllerInterface/DInput/DInput.h" #include "InputCommon/ControllerInterface/DInput/DInputKeyboardMouse.h" @@ -31,7 +32,7 @@ static const struct // lil silly static HWND m_hwnd; -void InitKeyboardMouse(IDirectInput8* const idi8, std::vector<Core::Device*>& devices, HWND _hwnd) +void InitKeyboardMouse(IDirectInput8* const idi8, HWND _hwnd) { m_hwnd = _hwnd; @@ -43,26 +44,15 @@ void InitKeyboardMouse(IDirectInput8* const idi8, std::vector<Core::Device*>& de LPDIRECTINPUTDEVICE8 kb_device = nullptr; LPDIRECTINPUTDEVICE8 mo_device = nullptr; - if (SUCCEEDED(idi8->CreateDevice(GUID_SysKeyboard, &kb_device, nullptr))) + if (SUCCEEDED(idi8->CreateDevice(GUID_SysKeyboard, &kb_device, nullptr)) && + SUCCEEDED(kb_device->SetDataFormat(&c_dfDIKeyboard)) && + SUCCEEDED(kb_device->SetCooperativeLevel(nullptr, DISCL_BACKGROUND | DISCL_NONEXCLUSIVE)) && + SUCCEEDED(idi8->CreateDevice(GUID_SysMouse, &mo_device, nullptr)) && + SUCCEEDED(mo_device->SetDataFormat(&c_dfDIMouse2)) && + SUCCEEDED(mo_device->SetCooperativeLevel(nullptr, DISCL_BACKGROUND | DISCL_NONEXCLUSIVE))) { - if (SUCCEEDED(kb_device->SetDataFormat(&c_dfDIKeyboard))) - { - if (SUCCEEDED(kb_device->SetCooperativeLevel(nullptr, DISCL_BACKGROUND | DISCL_NONEXCLUSIVE))) - { - if (SUCCEEDED(idi8->CreateDevice(GUID_SysMouse, &mo_device, nullptr))) - { - if (SUCCEEDED(mo_device->SetDataFormat(&c_dfDIMouse2))) - { - if (SUCCEEDED( - mo_device->SetCooperativeLevel(nullptr, DISCL_BACKGROUND | DISCL_NONEXCLUSIVE))) - { - devices.push_back(new KeyboardMouse(kb_device, mo_device)); - return; - } - } - } - } - } + g_controller_interface.AddDevice(new KeyboardMouse(kb_device, mo_device)); + return; } if (kb_device) diff --git a/Source/Core/InputCommon/ControllerInterface/DInput/DInputKeyboardMouse.h b/Source/Core/InputCommon/ControllerInterface/DInput/DInputKeyboardMouse.h index 1ba9022f9d..38de8e219d 100644 --- a/Source/Core/InputCommon/ControllerInterface/DInput/DInputKeyboardMouse.h +++ b/Source/Core/InputCommon/ControllerInterface/DInput/DInputKeyboardMouse.h @@ -13,7 +13,7 @@ namespace ciface { namespace DInput { -void InitKeyboardMouse(IDirectInput8* const idi8, std::vector<Core::Device*>& devices, HWND _hwnd); +void InitKeyboardMouse(IDirectInput8* const idi8, HWND _hwnd); class KeyboardMouse : public Core::Device { |
