summaryrefslogtreecommitdiff
path: root/Source/Core/InputCommon
diff options
context:
space:
mode:
authorAdmiral H. Curtiss <pikachu025@gmail.com>2022-01-06 08:08:02 +0100
committerAdmiral H. Curtiss <pikachu025@gmail.com>2022-01-08 20:08:21 +0100
commit5c325eef38ca087ecb7a4f95b8315101723f2806 (patch)
tree63e7d0dcd60597eb336b3d7162b7440b40d3384d /Source/Core/InputCommon
parenta0a0bfc5ca857718845bb8589c8cd4cd705af5fd (diff)
Config: Port SI device settings to new config system.
Diffstat (limited to 'Source/Core/InputCommon')
-rw-r--r--Source/Core/InputCommon/GCAdapter.cpp10
-rw-r--r--Source/Core/InputCommon/GCAdapter_Android.cpp25
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;
});