summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
authorJosJuice <josjuice@gmail.com>2021-04-27 23:43:04 +0200
committerJosJuice <josjuice@gmail.com>2022-07-17 14:02:03 +0200
commit2f3c0cdbc594cdcb76644e1e77aa185a1e50a244 (patch)
treeaf6034eefbb48b2b93915bba25c13d14580dfcc9 /Source/Core
parentbe551b15290519551ea6ec4b9627348b16bf075f (diff)
Split out controller initialization to UICommon
Diffstat (limited to 'Source/Core')
-rw-r--r--Source/Core/DolphinQt/HotkeyScheduler.cpp2
-rw-r--r--Source/Core/DolphinQt/MainWindow.cpp26
-rw-r--r--Source/Core/UICommon/UICommon.cpp41
-rw-r--r--Source/Core/UICommon/UICommon.h5
4 files changed, 50 insertions, 24 deletions
diff --git a/Source/Core/DolphinQt/HotkeyScheduler.cpp b/Source/Core/DolphinQt/HotkeyScheduler.cpp
index c3d2aadcb7..52fd1ac00a 100644
--- a/Source/Core/DolphinQt/HotkeyScheduler.cpp
+++ b/Source/Core/DolphinQt/HotkeyScheduler.cpp
@@ -48,8 +48,6 @@ constexpr const char* DUBOIS_ALGORITHM_SHADER = "dubois";
HotkeyScheduler::HotkeyScheduler() : m_stop_requested(false)
{
- HotkeyManagerEmu::Initialize();
- HotkeyManagerEmu::LoadConfig();
HotkeyManagerEmu::Enable(true);
}
diff --git a/Source/Core/DolphinQt/MainWindow.cpp b/Source/Core/DolphinQt/MainWindow.cpp
index dab8f45c24..281bbc78a8 100644
--- a/Source/Core/DolphinQt/MainWindow.cpp
+++ b/Source/Core/DolphinQt/MainWindow.cpp
@@ -321,24 +321,12 @@ void MainWindow::InitControllers()
if (g_controller_interface.IsInit())
return;
- g_controller_interface.Initialize(GetWindowSystemInfo(windowHandle()));
- if (!g_controller_interface.HasDefaultDevice())
- {
- // Note that the CI default device could be still temporarily removed at any time
- WARN_LOG_FMT(CONTROLLERINTERFACE,
- "No default device has been added in time. EmulatedController(s) defaulting adds"
- " input mappings made for a specific default device depending on the platform");
- }
- GCAdapter::Init();
- Pad::Initialize();
- Pad::InitializeGBA();
- Keyboard::Initialize();
- Wiimote::Initialize(Wiimote::InitializeMode::DO_NOT_WAIT_FOR_WIIMOTES);
- FreeLook::Initialize();
+ UICommon::InitControllers(GetWindowSystemInfo(windowHandle()));
+
m_hotkey_scheduler = new HotkeyScheduler();
m_hotkey_scheduler->Start();
- // Defaults won't work reliabily without loading and saving the config first
+ // Defaults won't work reliably without loading and saving the config first
Wiimote::LoadConfig();
Wiimote::GetConfig()->SaveConfig();
@@ -362,13 +350,7 @@ void MainWindow::ShutdownControllers()
Settings::Instance().UnregisterDevicesChangedCallback();
- Pad::Shutdown();
- Pad::ShutdownGBA();
- Keyboard::Shutdown();
- Wiimote::Shutdown();
- HotkeyManagerEmu::Shutdown();
- FreeLook::Shutdown();
- g_controller_interface.Shutdown();
+ UICommon::ShutdownControllers();
m_hotkey_scheduler->deleteLater();
}
diff --git a/Source/Core/UICommon/UICommon.cpp b/Source/Core/UICommon/UICommon.cpp
index 469c9b2c67..8d9dc2abb8 100644
--- a/Source/Core/UICommon/UICommon.cpp
+++ b/Source/Core/UICommon/UICommon.cpp
@@ -28,12 +28,18 @@
#include "Core/ConfigLoaders/BaseConfigLoader.h"
#include "Core/ConfigManager.h"
#include "Core/Core.h"
+#include "Core/FreeLookManager.h"
+#include "Core/HW/GBAPad.h"
+#include "Core/HW/GCKeyboard.h"
+#include "Core/HW/GCPad.h"
#include "Core/HW/ProcessorInterface.h"
#include "Core/HW/Wiimote.h"
+#include "Core/HotkeyManager.h"
#include "Core/IOS/IOS.h"
#include "Core/IOS/STM/STM.h"
#include "Core/WiiRoot.h"
+#include "InputCommon/ControllerInterface/ControllerInterface.h"
#include "InputCommon/GCAdapter.h"
#include "UICommon/DiscordPresence.h"
@@ -128,6 +134,41 @@ void Shutdown()
Config::Shutdown();
}
+void InitControllers(const WindowSystemInfo& wsi)
+{
+ if (g_controller_interface.IsInit())
+ return;
+
+ g_controller_interface.Initialize(wsi);
+
+ if (!g_controller_interface.HasDefaultDevice())
+ {
+ // Note that the CI default device could be still temporarily removed at any time
+ WARN_LOG_FMT(CONTROLLERINTERFACE, "No default device has been added in time. Premade control "
+ "mappings intended for the default device may not work.");
+ }
+
+ GCAdapter::Init();
+ Pad::Initialize();
+ Pad::InitializeGBA();
+ Keyboard::Initialize();
+ Wiimote::Initialize(Wiimote::InitializeMode::DO_NOT_WAIT_FOR_WIIMOTES);
+ HotkeyManagerEmu::Initialize();
+ FreeLook::Initialize();
+}
+
+void ShutdownControllers()
+{
+ Pad::Shutdown();
+ Pad::ShutdownGBA();
+ Keyboard::Shutdown();
+ Wiimote::Shutdown();
+ HotkeyManagerEmu::Shutdown();
+ FreeLook::Shutdown();
+
+ g_controller_interface.Shutdown();
+}
+
void SetLocale(std::string locale_name)
{
auto set_locale = [](const std::string& locale) {
diff --git a/Source/Core/UICommon/UICommon.h b/Source/Core/UICommon/UICommon.h
index 6bdb11f541..f57518cf14 100644
--- a/Source/Core/UICommon/UICommon.h
+++ b/Source/Core/UICommon/UICommon.h
@@ -7,11 +7,16 @@
#include "Common/CommonTypes.h"
+struct WindowSystemInfo;
+
namespace UICommon
{
void Init();
void Shutdown();
+void InitControllers(const WindowSystemInfo& wsi);
+void ShutdownControllers();
+
#ifdef HAVE_X11
void InhibitScreenSaver(unsigned long win, bool enable);
#else