diff options
| author | Léo Lam <leo@innovatetechnologi.es> | 2016-07-14 17:45:59 +0200 |
|---|---|---|
| committer | Léo Lam <leo@innovatetechnologi.es> | 2016-07-29 17:18:37 +0200 |
| commit | 93f5df419521171c11e16d6a8ff84b9d0d8fd6c0 (patch) | |
| tree | f0d915225a6221acc88716b6f7f8c62a1963fc7a /Source/Core/InputCommon/ControllerInterface/ControllerInterface.cpp | |
| parent | 0d783f0869eaef163a318ab4d79744f592ed1cc5 (diff) | |
ControllerInterface: Add RemoveDevice()
This adds RemoveDevice() to ControllerInterface, fixes ExpressionParser
and some other code to support device removals without crashing,
and adds an IsValid() method to Device, to prepare for hotplugging.
Diffstat (limited to 'Source/Core/InputCommon/ControllerInterface/ControllerInterface.cpp')
| -rw-r--r-- | Source/Core/InputCommon/ControllerInterface/ControllerInterface.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/Source/Core/InputCommon/ControllerInterface/ControllerInterface.cpp b/Source/Core/InputCommon/ControllerInterface/ControllerInterface.cpp index cc80b7b234..cf726698f1 100644 --- a/Source/Core/InputCommon/ControllerInterface/ControllerInterface.cpp +++ b/Source/Core/InputCommon/ControllerInterface/ControllerInterface.cpp @@ -160,6 +160,14 @@ void ControllerInterface::AddDevice(std::shared_ptr<ciface::Core::Device> device m_devices.emplace_back(std::move(device)); } +void ControllerInterface::RemoveDevice(std::function<bool(const ciface::Core::Device*)> callback) +{ + std::lock_guard<std::mutex> lk(m_devices_mutex); + m_devices.erase(std::remove_if(m_devices.begin(), m_devices.end(), + [&callback](const auto& dev) { return callback(dev.get()); }), + m_devices.end()); +} + // // UpdateInput // |
