diff options
| author | skidau <skidau@gmail.com> | 2015-03-05 19:49:10 +1100 |
|---|---|---|
| committer | skidau <skidau@gmail.com> | 2015-03-08 20:27:13 +1100 |
| commit | 780eef68f6ec7deee1a11f8bc1386f70133b6cc0 (patch) | |
| tree | 9817364bdf1ac1e9ff73de1029a07e45b32c8f5e /Source/Core/DolphinWX/ControllerConfigDiag.cpp | |
| parent | b446ea013241fc28797f5bfdfdb40b374394baed (diff) | |
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
Diffstat (limited to 'Source/Core/DolphinWX/ControllerConfigDiag.cpp')
| -rw-r--r-- | Source/Core/DolphinWX/ControllerConfigDiag.cpp | 53 |
1 files changed, 9 insertions, 44 deletions
diff --git a/Source/Core/DolphinWX/ControllerConfigDiag.cpp b/Source/Core/DolphinWX/ControllerConfigDiag.cpp index 909f70b1b1..6f3ae906f5 100644 --- a/Source/Core/DolphinWX/ControllerConfigDiag.cpp +++ b/Source/Core/DolphinWX/ControllerConfigDiag.cpp @@ -23,6 +23,7 @@ #include "Common/SysConf.h" #include "Core/ConfigManager.h" #include "Core/Core.h" +#include "Core/HotkeyManager.h" #include "Core/Movie.h" #include "Core/NetPlayProto.h" #include "Core/HW/GCKeyboard.h" @@ -207,12 +208,13 @@ wxStaticBoxSizer* ControllerConfigDiag::CreateWiimoteConfigSizer() wiimote_configure_bt[i]->Bind(wxEVT_BUTTON, &ControllerConfigDiag::ConfigEmulatedWiimote, this); // Disable controller type selection for certain circumstances. - if (NetPlay::IsNetPlayRunning() || Movie::IsMovieActive()) + bool wii_game_started = SConfig::GetInstance().m_LocalCoreStartupParameter.bWii || Core::GetState() == Core::CORE_UNINITIALIZED; + if (NetPlay::IsNetPlayRunning() || Movie::IsMovieActive() || !wii_game_started) wiimote_source_ch[i]->Disable(); m_orig_wiimote_sources[i] = g_wiimote_sources[i]; wiimote_source_ch[i]->Select(m_orig_wiimote_sources[i]); - if (m_orig_wiimote_sources[i] != WIIMOTE_SRC_EMU && m_orig_wiimote_sources[i] != WIIMOTE_SRC_HYBRID) + if (!wii_game_started || (m_orig_wiimote_sources[i] != WIIMOTE_SRC_EMU && m_orig_wiimote_sources[i] != WIIMOTE_SRC_HYBRID)) wiimote_configure_bt[i]->Disable(); } @@ -390,28 +392,13 @@ wxStaticBoxSizer* ControllerConfigDiag::CreateGeneralWiimoteSettingsSizer() void ControllerConfigDiag::ConfigEmulatedWiimote(wxCommandEvent& ev) { InputConfig* const wiimote_plugin = Wiimote::GetConfig(); - bool was_init = false; - if (g_controller_interface.IsInit()) // check if game is running - { - was_init = true; - } - else - { -#if defined(HAVE_X11) && HAVE_X11 - Window win = X11Utils::XWindowFromHandle(GetHandle()); - Wiimote::Initialize(reinterpret_cast<void*>(win)); -#else - Wiimote::Initialize(reinterpret_cast<void*>(GetHandle())); -#endif - } + + HotkeyManagerEmu::Enable(false); InputConfigDialog m_ConfigFrame(this, *wiimote_plugin, _("Dolphin Emulated Wiimote Configuration"), m_wiimote_index_from_conf_bt_id[ev.GetId()]); m_ConfigFrame.ShowModal(); - if (!was_init) // if game isn't running - { - Wiimote::Shutdown(); - } + HotkeyManagerEmu::Enable(true); } void ControllerConfigDiag::RefreshRealWiimotes(wxCommandEvent&) @@ -535,24 +522,7 @@ void ControllerConfigDiag::OnGameCubeConfigButton(wxCommandEvent& event) InputConfig* const key_plugin = Keyboard::GetConfig(); const int port_num = m_gc_port_config_ids[event.GetId()]; - bool was_init = false; - - // check if game is running - if (g_controller_interface.IsInit()) - { - was_init = true; - } - else - { -#if defined(HAVE_X11) && HAVE_X11 - Window win = X11Utils::XWindowFromHandle(GetHandle()); - Pad::Initialize(reinterpret_cast<void*>(win)); - Keyboard::Initialize(reinterpret_cast<void*>(win)); -#else - Pad::Initialize(reinterpret_cast<void*>(GetHandle())); - Keyboard::Initialize(reinterpret_cast<void*>(GetHandle())); -#endif - } + HotkeyManagerEmu::Enable(false); if (SConfig::GetInstance().m_SIDevice[port_num] == SIDEVICE_GC_KEYBOARD) { @@ -565,10 +535,5 @@ void ControllerConfigDiag::OnGameCubeConfigButton(wxCommandEvent& event) m_ConfigFrame.ShowModal(); } - // if game isn't running - if (!was_init) - { - Keyboard::Shutdown(); - Pad::Shutdown(); - } + HotkeyManagerEmu::Enable(true); } |
