ControllerInterface: add mutex around callbacks vector

This commit is contained in:
Michael M 2017-11-10 12:29:25 -08:00
parent 1ed7532af8
commit fd7cbd633e
2 changed files with 6 additions and 6 deletions

View File

@ -4,7 +4,7 @@
#include "InputCommon/ControllerInterface/ControllerInterface.h" #include "InputCommon/ControllerInterface/ControllerInterface.h"
#include <mutex> #include <algorithm>
#include "Common/Logging/Log.h" #include "Common/Logging/Log.h"
@ -232,6 +232,7 @@ void ControllerInterface::UpdateInput()
// //
void ControllerInterface::RegisterDevicesChangedCallback(std::function<void()> callback) void ControllerInterface::RegisterDevicesChangedCallback(std::function<void()> callback)
{ {
std::lock_guard<std::mutex> lk(m_callbacks_mutex);
m_devices_changed_callbacks.emplace_back(std::move(callback)); m_devices_changed_callbacks.emplace_back(std::move(callback));
} }
@ -242,6 +243,7 @@ void ControllerInterface::RegisterDevicesChangedCallback(std::function<void()> c
// //
void ControllerInterface::InvokeDevicesChangedCallbacks() const void ControllerInterface::InvokeDevicesChangedCallbacks() const
{ {
std::lock_guard<std::mutex> lk(m_callbacks_mutex);
for (const auto& callback : m_devices_changed_callbacks) for (const auto& callback : m_devices_changed_callbacks)
callback(); callback();
} }

View File

@ -4,14 +4,11 @@
#pragma once #pragma once
#include <algorithm>
#include <functional> #include <functional>
#include <map> #include <memory>
#include <sstream> #include <mutex>
#include <string>
#include <vector> #include <vector>
#include "Common/CommonTypes.h"
#include "InputCommon/ControllerInterface/Device.h" #include "InputCommon/ControllerInterface/Device.h"
// enable disable sources // enable disable sources
@ -58,6 +55,7 @@ public:
private: private:
std::vector<std::function<void()>> m_devices_changed_callbacks; std::vector<std::function<void()>> m_devices_changed_callbacks;
mutable std::mutex m_callbacks_mutex;
bool m_is_init; bool m_is_init;
void* m_hwnd; void* m_hwnd;
}; };