mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-21 05:09:34 -06:00
ControllerInterface: Make the ID assigning code common
This makes the device ID assigning code common to all backends, by moving it to AddDevice() instead of copy-pasting or replicating the logic in the backends. Also, to prepare for hotplugging, instead of relying on a name usage count, the new ID assigning system always starts from ID 0 and tries to assign the first ID that is not used.
This commit is contained in:
@ -23,10 +23,6 @@ void InitJoystick(IDirectInput8* const idi8, HWND hwnd)
|
||||
idi8->EnumDevices(DI8DEVCLASS_GAMECTRL, DIEnumDevicesCallback, (LPVOID)&joysticks,
|
||||
DIEDFL_ATTACHEDONLY);
|
||||
|
||||
// this is used to number the joysticks
|
||||
// multiple joysticks with the same name shall get unique ids starting at 0
|
||||
std::map<std::basic_string<TCHAR>, int> name_counts;
|
||||
|
||||
std::vector<DWORD> xinput_guids;
|
||||
GetXInputGUIDS(&xinput_guids);
|
||||
|
||||
@ -58,7 +54,7 @@ void InitJoystick(IDirectInput8* const idi8, HWND hwnd)
|
||||
}
|
||||
}
|
||||
|
||||
auto js = std::make_shared<Joystick>(js_device, name_counts[joystick.tszInstanceName]++);
|
||||
auto js = std::make_shared<Joystick>(js_device);
|
||||
// only add if it has some inputs/outputs
|
||||
if (js->Inputs().size() || js->Outputs().size())
|
||||
g_controller_interface.AddDevice(std::move(js));
|
||||
@ -72,9 +68,8 @@ void InitJoystick(IDirectInput8* const idi8, HWND hwnd)
|
||||
}
|
||||
}
|
||||
|
||||
Joystick::Joystick(/*const LPCDIDEVICEINSTANCE lpddi, */ const LPDIRECTINPUTDEVICE8 device,
|
||||
const unsigned int index)
|
||||
: m_device(device), m_index(index)
|
||||
Joystick::Joystick(/*const LPCDIDEVICEINSTANCE lpddi, */ const LPDIRECTINPUTDEVICE8 device)
|
||||
: m_device(device)
|
||||
//, m_name(TStringToString(lpddi->tszInstanceName))
|
||||
{
|
||||
// seems this needs to be done before GetCapabilities
|
||||
@ -167,11 +162,6 @@ std::string Joystick::GetName() const
|
||||
return GetDeviceName(m_device);
|
||||
}
|
||||
|
||||
int Joystick::GetId() const
|
||||
{
|
||||
return m_index;
|
||||
}
|
||||
|
||||
std::string Joystick::GetSource() const
|
||||
{
|
||||
return DINPUT_SOURCE_NAME;
|
||||
|
@ -62,16 +62,14 @@ private:
|
||||
public:
|
||||
void UpdateInput() override;
|
||||
|
||||
Joystick(const LPDIRECTINPUTDEVICE8 device, const unsigned int index);
|
||||
Joystick(const LPDIRECTINPUTDEVICE8 device);
|
||||
~Joystick();
|
||||
|
||||
std::string GetName() const override;
|
||||
int GetId() const override;
|
||||
std::string GetSource() const override;
|
||||
|
||||
private:
|
||||
const LPDIRECTINPUTDEVICE8 m_device;
|
||||
const unsigned int m_index;
|
||||
|
||||
DIJOYSTATE m_state_in;
|
||||
|
||||
|
@ -185,12 +185,6 @@ std::string KeyboardMouse::GetName() const
|
||||
return "Keyboard Mouse";
|
||||
}
|
||||
|
||||
int KeyboardMouse::GetId() const
|
||||
{
|
||||
// should this be -1, idk
|
||||
return 0;
|
||||
}
|
||||
|
||||
std::string KeyboardMouse::GetSource() const
|
||||
{
|
||||
return DINPUT_SOURCE_NAME;
|
||||
|
@ -89,7 +89,6 @@ public:
|
||||
~KeyboardMouse();
|
||||
|
||||
std::string GetName() const override;
|
||||
int GetId() const override;
|
||||
std::string GetSource() const override;
|
||||
|
||||
private:
|
||||
|
Reference in New Issue
Block a user