ControllerInterface: Don't pass m_devices to the backends

Previously, the devices vector would be passed to all backends. They
would then manually push_back to it to add new devices. This was fine
but caused issues when trying to add synchronisation.

Instead, backends now call AddDevice() to fill m_devices so that it is
not accessible from the outside.
This commit is contained in:
Léo Lam
2016-06-12 17:08:04 +02:00
parent 8a1bbaa563
commit fd29e5c4cc
24 changed files with 69 additions and 72 deletions

View File

@ -46,7 +46,7 @@ namespace ciface
namespace XInput2
{
// This function will add zero or more KeyboardMouse objects to devices.
void Init(std::vector<Core::Device*>& devices, void* const hwnd)
void Init(void* const hwnd)
{
Display* dpy = XOpenDisplay(nullptr);
@ -78,8 +78,8 @@ void Init(std::vector<Core::Device*>& devices, void* const hwnd)
if (current_master->use == XIMasterPointer)
// Since current_master is a master pointer, its attachment must
// be a master keyboard.
devices.push_back(new KeyboardMouse((Window)hwnd, xi_opcode, current_master->deviceid,
current_master->attachment));
g_controller_interface.AddDevice(new KeyboardMouse(
(Window)hwnd, xi_opcode, current_master->deviceid, current_master->attachment));
}
XCloseDisplay(dpy);