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

@ -7,6 +7,7 @@
#include <sstream>
#include "Common/StringUtil.h"
#include "InputCommon/ControllerInterface/ControllerInterface.h"
#include "InputCommon/ControllerInterface/SDL/SDL.h"
#ifdef _WIN32
@ -32,7 +33,7 @@ static std::string GetJoystickName(int index)
#endif
}
void Init(std::vector<Core::Device*>& devices)
void Init()
{
// this is used to number the joysticks
// multiple joysticks with the same name shall get unique ids starting at 0
@ -60,7 +61,7 @@ void Init(std::vector<Core::Device*>& devices)
Joystick* js = new Joystick(dev, i, name_counts[GetJoystickName(i)]++);
// 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;
}

View File

@ -8,8 +8,6 @@
#include <SDL.h>
#include "InputCommon/ControllerInterface/Device.h"
#if SDL_VERSION_ATLEAST(1, 3, 0)
#define USE_SDL_HAPTIC
#endif
@ -22,7 +20,7 @@ namespace ciface
{
namespace SDL
{
void Init(std::vector<Core::Device*>& devices);
void Init();
class Joystick : public Core::Device
{