diff --git a/src/util/input_manager.cpp b/src/util/input_manager.cpp index 9815b8df47..915bb59511 100644 --- a/src/util/input_manager.cpp +++ b/src/util/input_manager.cpp @@ -146,10 +146,9 @@ using BindingMap = std::unordered_multimap; static BindingMap s_binding_map; static VibrationBindingArray s_pad_vibration_array; -static std::mutex s_mutex; +static std::recursive_mutex s_mutex; // Hooks/intercepting (for setting bindings) -static std::mutex m_event_intercept_mutex; static InputInterceptHook::Callback m_event_intercept_callback; // Input sources. Keyboard/mouse don't exist here. @@ -1864,27 +1863,27 @@ void InputManager::UpdateMacroButtons() void InputManager::SetHook(InputInterceptHook::Callback callback) { - std::unique_lock lock(m_event_intercept_mutex); + std::unique_lock lock(s_mutex); DebugAssert(!m_event_intercept_callback); m_event_intercept_callback = std::move(callback); } void InputManager::RemoveHook() { - std::unique_lock lock(m_event_intercept_mutex); + std::unique_lock lock(s_mutex); if (m_event_intercept_callback) m_event_intercept_callback = {}; } bool InputManager::HasHook() { - std::unique_lock lock(m_event_intercept_mutex); + std::unique_lock lock(s_mutex); return (bool)m_event_intercept_callback; } bool InputManager::DoEventHook(InputBindingKey key, float value) { - std::unique_lock lock(m_event_intercept_mutex); + std::unique_lock lock(s_mutex); if (!m_event_intercept_callback) return false;