From 2f3c0cdbc594cdcb76644e1e77aa185a1e50a244 Mon Sep 17 00:00:00 2001 From: JosJuice Date: Tue, 27 Apr 2021 23:43:04 +0200 Subject: [PATCH] Split out controller initialization to UICommon --- Source/Core/DolphinQt/HotkeyScheduler.cpp | 2 -- Source/Core/DolphinQt/MainWindow.cpp | 26 +++----------- Source/Core/UICommon/UICommon.cpp | 41 +++++++++++++++++++++++ Source/Core/UICommon/UICommon.h | 5 +++ 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