diff options
| author | Admiral H. Curtiss <pikachu025@gmail.com> | 2022-01-06 08:08:02 +0100 |
|---|---|---|
| committer | Admiral H. Curtiss <pikachu025@gmail.com> | 2022-01-08 20:08:21 +0100 |
| commit | 5c325eef38ca087ecb7a4f95b8315101723f2806 (patch) | |
| tree | 63e7d0dcd60597eb336b3d7162b7440b40d3384d /Source/Core/InputCommon | |
| parent | a0a0bfc5ca857718845bb8589c8cd4cd705af5fd (diff) | |
Config: Port SI device settings to new config system.
Diffstat (limited to 'Source/Core/InputCommon')
| -rw-r--r-- | Source/Core/InputCommon/GCAdapter.cpp | 10 | ||||
| -rw-r--r-- | Source/Core/InputCommon/GCAdapter_Android.cpp | 25 |
2 files changed, 29 insertions, 6 deletions
diff --git a/Source/Core/InputCommon/GCAdapter.cpp b/Source/Core/InputCommon/GCAdapter.cpp index 26984ca4dc..e03cf99f82 100644 --- a/Source/Core/InputCommon/GCAdapter.cpp +++ b/Source/Core/InputCommon/GCAdapter.cpp @@ -83,6 +83,8 @@ static u8 s_endpoint_out = 0; static u64 s_last_init = 0; static std::optional<size_t> s_config_callback_id = std::nullopt; +static std::array<SerialInterface::SIDevices, SerialInterface::MAX_SI_CHANNELS> + s_config_si_device_type{}; static std::array<bool, SerialInterface::MAX_SI_CHANNELS> s_config_rumble_enabled{}; static void Read() @@ -205,7 +207,10 @@ void SetAdapterCallback(std::function<void()> func) static void RefreshConfig() { for (int i = 0; i < SerialInterface::MAX_SI_CHANNELS; ++i) + { + s_config_si_device_type[i] = Config::Get(Config::GetInfoForSIDevice(i)); s_config_rumble_enabled[i] = Config::Get(Config::GetInfoForAdapterRumble(i)); + } } void Init() @@ -542,9 +547,8 @@ void ResetDeviceType(int chan) bool UseAdapter() { - const auto& si_devices = SConfig::GetInstance().m_SIDevice; - - return std::any_of(std::begin(si_devices), std::end(si_devices), [](const auto device_type) { + const auto& si_devices = s_config_si_device_type; + return std::any_of(si_devices.begin(), si_devices.end(), [](const auto device_type) { return device_type == SerialInterface::SIDEVICE_WIIU_ADAPTER; }); } diff --git a/Source/Core/InputCommon/GCAdapter_Android.cpp b/Source/Core/InputCommon/GCAdapter_Android.cpp index 416fa30523..1e58733236 100644 --- a/Source/Core/InputCommon/GCAdapter_Android.cpp +++ b/Source/Core/InputCommon/GCAdapter_Android.cpp @@ -12,7 +12,7 @@ #include "Common/Flag.h" #include "Common/Logging/Log.h" #include "Common/Thread.h" -#include "Core/ConfigManager.h" +#include "Core/Config/MainSettings.h" #include "Core/Core.h" #include "Core/CoreTiming.h" #include "Core/HW/SI/SI.h" @@ -61,6 +61,16 @@ static Common::Flag s_adapter_detect_thread_running; static u64 s_last_init = 0; +static std::optional<size_t> s_config_callback_id = std::nullopt; +static std::array<SerialInterface::SIDevices, SerialInterface::MAX_SI_CHANNELS> + s_config_si_device_type{}; + +static void RefreshConfig() +{ + for (int i = 0; i < SerialInterface::MAX_SI_CHANNELS; ++i) + s_config_si_device_type[i] = Config::Get(Config::GetInfoForSIDevice(i)); +} + static void ScanThreadFunc() { Common::SetCurrentThreadName("GC Adapter Scanning Thread"); @@ -200,6 +210,10 @@ void Init() jclass adapter_class = env->FindClass("org/dolphinemu/dolphinemu/utils/Java_GCAdapter"); s_adapter_class = reinterpret_cast<jclass>(env->NewGlobalRef(adapter_class)); + if (!s_config_callback_id) + s_config_callback_id = Config::AddConfigChangedCallback(RefreshConfig); + RefreshConfig(); + if (UseAdapter()) StartScanThread(); } @@ -236,6 +250,12 @@ void Shutdown() { StopScanThread(); Reset(); + + if (s_config_callback_id) + { + Config::RemoveConfigChangedCallback(*s_config_callback_id); + s_config_callback_id = std::nullopt; + } } void StartScanThread() @@ -376,8 +396,7 @@ void ResetDeviceType(int chan) bool UseAdapter() { - const auto& si_devices = SConfig::GetInstance().m_SIDevice; - + const auto& si_devices = s_config_si_device_type; return std::any_of(std::begin(si_devices), std::end(si_devices), [](const auto device_type) { return device_type == SerialInterface::SIDEVICE_WIIU_ADAPTER; }); |
