From 7dcb6a3e6c344e864afb77c0b859fbbbaefa680b Mon Sep 17 00:00:00 2001 From: Lioncash Date: Mon, 23 Mar 2015 08:32:30 -0400 Subject: [PATCH 1/2] DolphinWX: Initialize the HotkeyManager after input backends are initialized Previously OSX would crash upon loading. This is because the UI would be polling for hotkey inputs but was doing so before the inputs backends were initialized. --- Source/Core/DolphinWX/Frame.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Source/Core/DolphinWX/Frame.cpp b/Source/Core/DolphinWX/Frame.cpp index 1974717ef5..66d5409bc1 100644 --- a/Source/Core/DolphinWX/Frame.cpp +++ b/Source/Core/DolphinWX/Frame.cpp @@ -358,15 +358,15 @@ bool CFrame::InitControllers() { #if defined(HAVE_X11) && HAVE_X11 Window win = X11Utils::XWindowFromHandle(GetHandle()); - HotkeyManagerEmu::Initialize(reinterpret_cast(win)); Pad::Initialize(reinterpret_cast(win)); Keyboard::Initialize(reinterpret_cast(win)); Wiimote::Initialize(reinterpret_cast(win)); + HotkeyManagerEmu::Initialize(reinterpret_cast(win)); #else - HotkeyManagerEmu::Initialize(reinterpret_cast(GetHandle())); Pad::Initialize(reinterpret_cast(GetHandle())); Keyboard::Initialize(reinterpret_cast(GetHandle())); Wiimote::Initialize(reinterpret_cast(GetHandle())); + HotkeyManagerEmu::Initialize(reinterpret_cast(GetHandle())); #endif return true; } From bc1d62036bc1b7bb656fa0d534909d4e6d7cda4c Mon Sep 17 00:00:00 2001 From: Lioncash Date: Mon, 23 Mar 2015 08:40:18 -0400 Subject: [PATCH 2/2] Core: Fix warnings related to HotkeyManager These need to be marked static since they aren't used outside of this translation unit. --- Source/Core/Core/HotkeyManager.cpp | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/Source/Core/Core/HotkeyManager.cpp b/Source/Core/Core/HotkeyManager.cpp index 8c48c80c16..5a8f1f0c9f 100644 --- a/Source/Core/Core/HotkeyManager.cpp +++ b/Source/Core/Core/HotkeyManager.cpp @@ -117,11 +117,11 @@ const int num_hotkeys = (sizeof(hotkey_labels) / sizeof(hotkey_labels[0])); namespace HotkeyManagerEmu { -u32 hotkeyDown[3]; -HotkeyStatus hotkey; -bool enabled; +static u32 s_hotkeyDown[3]; +static HotkeyStatus s_hotkey; +static bool s_enabled; -InputConfig s_config("Hotkeys", _trans("Hotkeys"), "Hotkeys"); +static InputConfig s_config("Hotkeys", _trans("Hotkeys"), "Hotkeys"); InputConfig* GetConfig() { @@ -130,36 +130,36 @@ InputConfig* GetConfig() void GetStatus() { - hotkey.err = PAD_ERR_NONE; + s_hotkey.err = PAD_ERR_NONE; // get input - ((HotkeyManager*)s_config.controllers[0])->GetInput(&hotkey); + ((HotkeyManager*)s_config.controllers[0])->GetInput(&s_hotkey); } bool IsEnabled() { - return enabled; + return s_enabled; } void Enable(bool enable_toggle) { - enabled = enable_toggle; + s_enabled = enable_toggle; } bool IsPressed(int Id, bool held) { unsigned int set = Id / 32; unsigned int setKey = Id % 32; - if (hotkey.button[set] & (1 << setKey)) + if (s_hotkey.button[set] & (1 << setKey)) { - hotkeyDown[set] |= (1 << setKey); + s_hotkeyDown[set] |= (1 << setKey); if (held) return true; } else { - bool pressed = !!(hotkeyDown[set] & (1 << setKey)); - hotkeyDown[set] &= ~(1 << setKey); + bool pressed = !!(s_hotkeyDown[set] & (1 << setKey)); + s_hotkeyDown[set] &= ~(1 << setKey); if (pressed) return true; } @@ -178,9 +178,9 @@ void Initialize(void* const hwnd) s_config.LoadConfig(true); for (unsigned int i = 0; i < 3; ++i) - hotkeyDown[i] = 0; + s_hotkeyDown[i] = 0; - enabled = true; + s_enabled = true; } void LoadConfig()