| 1812 | |
| 1813 | template <typename T> |
| 1814 | void InputManager::UpdateInputSourceState(SettingsInterface& si, std::unique_lock<std::mutex>& settings_lock, InputSourceType type) |
| 1815 | { |
| 1816 | if (!s_input_sources[static_cast<u32>(type)]) |
| 1817 | { |
| 1818 | std::unique_ptr<InputSource> source = std::make_unique<T>(); |
| 1819 | if (!source->Initialize(si, settings_lock)) |
| 1820 | Console.Error("(InputManager) Source '%s' failed to initialize.", InputSourceToString(type)); |
| 1821 | |
| 1822 | s_input_sources[static_cast<u32>(type)] = std::move(source); |
| 1823 | } |
| 1824 | |
| 1825 | const bool enabled = IsInputSourceEnabled(si, type); |
| 1826 | if (enabled) |
| 1827 | { |
| 1828 | if (s_input_sources[static_cast<u32>(type)]->IsInitialized()) |
| 1829 | { |
| 1830 | s_input_sources[static_cast<u32>(type)]->UpdateSettings(si, settings_lock); |
| 1831 | } |
| 1832 | else if (!s_input_sources[static_cast<u32>(type)]->Initialize(si, settings_lock)) |
| 1833 | { |
| 1834 | Console.Error("(InputManager) Source '%s' failed to initialize.", InputSourceToString(type)); |
| 1835 | } |
| 1836 | } |
| 1837 | else |
| 1838 | { |
| 1839 | if (s_input_sources[static_cast<u32>(type)]->IsInitialized()) |
| 1840 | { |
| 1841 | settings_lock.unlock(); |
| 1842 | s_input_sources[static_cast<u32>(type)]->Shutdown(); |
| 1843 | settings_lock.lock(); |
| 1844 | } |
| 1845 | } |
| 1846 | } |
| 1847 | |
| 1848 | #include "Input/SDLInputSource.h" |
| 1849 |
nothing calls this directly
no test coverage detected