mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-23 22:29:39 -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:
@ -46,7 +46,6 @@ void Init()
|
||||
// Search the Pipes directory for files that we can open in read-only,
|
||||
// non-blocking mode. The device name is the virtual name of the file.
|
||||
File::FSTEntry fst;
|
||||
int found = 0;
|
||||
std::string dir_path = File::GetUserPath(D_PIPES_IDX);
|
||||
if (!File::Exists(dir_path))
|
||||
return;
|
||||
@ -61,11 +60,11 @@ void Init()
|
||||
int fd = open(child.physicalName.c_str(), O_RDONLY | O_NONBLOCK);
|
||||
if (fd < 0)
|
||||
continue;
|
||||
g_controller_interface.AddDevice(std::make_shared<PipeDevice>(fd, child.virtualName, found++));
|
||||
g_controller_interface.AddDevice(std::make_shared<PipeDevice>(fd, child.virtualName));
|
||||
}
|
||||
}
|
||||
|
||||
PipeDevice::PipeDevice(int fd, const std::string& name, int id) : m_fd(fd), m_name(name), m_id(id)
|
||||
PipeDevice::PipeDevice(int fd, const std::string& name) : m_fd(fd), m_name(name)
|
||||
{
|
||||
for (const auto& tok : s_button_tokens)
|
||||
{
|
||||
|
@ -27,12 +27,11 @@ void Init();
|
||||
class PipeDevice : public Core::Device
|
||||
{
|
||||
public:
|
||||
PipeDevice(int fd, const std::string& name, int id);
|
||||
PipeDevice(int fd, const std::string& name);
|
||||
~PipeDevice();
|
||||
|
||||
void UpdateInput() override;
|
||||
std::string GetName() const override { return m_name; }
|
||||
int GetId() const override { return m_id; }
|
||||
std::string GetSource() const override { return "Pipe"; }
|
||||
private:
|
||||
class PipeInput : public Input
|
||||
@ -53,7 +52,6 @@ private:
|
||||
|
||||
const int m_fd;
|
||||
const std::string m_name;
|
||||
const int m_id;
|
||||
std::string m_buf;
|
||||
std::map<std::string, PipeInput*> m_buttons;
|
||||
std::map<std::string, PipeInput*> m_axes;
|
||||
|
Reference in New Issue
Block a user