From 780eef68f6ec7deee1a11f8bc1386f70133b6cc0 Mon Sep 17 00:00:00 2001 From: skidau Date: Thu, 5 Mar 2015 19:49:10 +1100 Subject: Fixed the crash that would occur when the Refresh button was pressed in the controllers config. - Simplified the locking mechanism when controllers were updated - Reloaded the config of the controls instead of re-initialising the control plugins - Fixed controls being unresponsive after the Refresh button was pressed - Disables the hotkeys while the controller config is open --- Source/Core/DolphinWX/FrameTools.cpp | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) (limited to 'Source/Core/DolphinWX/FrameTools.cpp') diff --git a/Source/Core/DolphinWX/FrameTools.cpp b/Source/Core/DolphinWX/FrameTools.cpp index 7ab7e9523c..04534a48fb 100644 --- a/Source/Core/DolphinWX/FrameTools.cpp +++ b/Source/Core/DolphinWX/FrameTools.cpp @@ -51,6 +51,7 @@ #include "Core/State.h" #include "Core/HW/CPU.h" #include "Core/HW/DVDInterface.h" +#include "Core/HW/GCKeyboard.h" #include "Core/HW/GCPad.h" #include "Core/HW/ProcessorInterface.h" #include "Core/HW/SI_Device.h" @@ -1366,27 +1367,31 @@ void CFrame::OnConfigHotkey(wxCommandEvent& WXUNUSED (event)) InputConfig* const hotkey_plugin = HotkeyManagerEmu::GetConfig(); // check if game is running - if (g_controller_interface.IsInit()) - { - was_init = true; - } - else + bool game_running = false; + if (Core::GetState() == Core::CORE_RUN) { -#if defined(HAVE_X11) && HAVE_X11 - Window win = X11Utils::XWindowFromHandle(GetHandle()); - HotkeyManagerEmu::Initialize(reinterpret_cast(win)); -#else - HotkeyManagerEmu::Initialize(reinterpret_cast(GetHandle())); -#endif + Core::SetState(Core::CORE_PAUSE); + game_running = true; } + HotkeyManagerEmu::Enable(false); + InputConfigDialog m_ConfigFrame(this, *hotkey_plugin, _("Dolphin Hotkeys")); m_ConfigFrame.ShowModal(); + // Update references in case controllers were refreshed + if (SConfig::GetInstance().m_LocalCoreStartupParameter.bWii) + Wiimote::LoadConfig(); + Keyboard::LoadConfig(); + Pad::LoadConfig(); + HotkeyManagerEmu::LoadConfig(); + + HotkeyManagerEmu::Enable(true); + // if game isn't running - if (!was_init) + if (game_running) { - HotkeyManagerEmu::Shutdown(); + Core::SetState(Core::CORE_RUN); } // Update the GUI in case menu accelerators were changed -- cgit v1.2.3