Updated the input plugins reference of hwnd on game start. Fixes the emu wiimotes mouse IR when rendering the game to a separate window.

This commit is contained in:
skidau 2015-03-19 21:31:05 +11:00
parent 27619e613f
commit 98dce11f8c
6 changed files with 21 additions and 8 deletions

View File

@ -430,6 +430,7 @@ void EmuThread()
else else
{ {
// Update references in case controllers were refreshed // Update references in case controllers were refreshed
g_controller_interface.Initialize(s_window_handle);
Pad::LoadConfig(); Pad::LoadConfig();
Keyboard::LoadConfig(); Keyboard::LoadConfig();
} }
@ -444,9 +445,10 @@ void EmuThread()
// Activate Wiimotes which don't have source set to "None" // Activate Wiimotes which don't have source set to "None"
for (unsigned int i = 0; i != MAX_BBMOTES; ++i) for (unsigned int i = 0; i != MAX_BBMOTES; ++i)
{
if (g_wiimote_sources[i]) if (g_wiimote_sources[i])
GetUsbPointer()->AccessWiiMote(i | 0x100)->Activate(true); GetUsbPointer()->AccessWiiMote(i | 0x100)->Activate(true);
}
} }
AudioCommon::InitSoundStream(); AudioCommon::InitSoundStream();
@ -557,7 +559,8 @@ void EmuThread()
if (init_controllers) if (init_controllers)
{ {
Wiimote::Shutdown(); if (core_parameter.bWii)
Wiimote::Shutdown();
Keyboard::Shutdown(); Keyboard::Shutdown();
Pad::Shutdown(); Pad::Shutdown();
init_controllers = false; init_controllers = false;

View File

@ -117,10 +117,11 @@ const int num_hotkeys = (sizeof(hotkey_labels) / sizeof(hotkey_labels[0]));
namespace HotkeyManagerEmu namespace HotkeyManagerEmu
{ {
static u32 hotkeyDown[3]; u32 hotkeyDown[3];
static HotkeyStatus hotkey; HotkeyStatus hotkey;
bool enabled;
static InputConfig s_config("Hotkeys", _trans("Hotkeys"), "Hotkeys"); InputConfig s_config("Hotkeys", _trans("Hotkeys"), "Hotkeys");
InputConfig* GetConfig() InputConfig* GetConfig()
{ {

View File

@ -39,6 +39,4 @@ namespace HotkeyManagerEmu
bool IsEnabled(); bool IsEnabled();
void Enable(bool enable_toggle); void Enable(bool enable_toggle);
bool IsPressed(int Id, bool held); bool IsPressed(int Id, bool held);
static bool enabled;
} }

View File

@ -1060,6 +1060,9 @@ GamepadPage::GamepadPage(wxWindow* parent, InputConfig& config, const unsigned i
mapping->Add(dio, 1, wxEXPAND|wxLEFT|wxTOP|wxBOTTOM, 5); mapping->Add(dio, 1, wxEXPAND|wxLEFT|wxTOP|wxBOTTOM, 5);
mapping->Add(control_group_sizer, 0, wxLEFT|wxEXPAND, 5); mapping->Add(control_group_sizer, 0, wxLEFT|wxEXPAND, 5);
wxCommandEvent event;
RefreshDevices(event);
UpdateGUI(); UpdateGUI();
SetSizerAndFit(mapping); // needed SetSizerAndFit(mapping); // needed

View File

@ -44,7 +44,7 @@ ControllerInterface g_controller_interface;
void ControllerInterface::Initialize(void* const hwnd) void ControllerInterface::Initialize(void* const hwnd)
{ {
if (m_is_init) if (m_is_init)
return; DeInit();
m_hwnd = hwnd; m_hwnd = hwnd;
@ -102,6 +102,11 @@ void ControllerInterface::Shutdown()
delete d; delete d;
} }
DeInit();
}
void ControllerInterface::DeInit()
{
m_devices.clear(); m_devices.clear();
#ifdef CIFACE_USE_XINPUT #ifdef CIFACE_USE_XINPUT

View File

@ -117,6 +117,9 @@ public:
void Initialize(void* const hwnd); void Initialize(void* const hwnd);
void Reinitialize(); void Reinitialize();
void Shutdown(); void Shutdown();
void DeInit();
bool IsInit() const { return m_is_init; } bool IsInit() const { return m_is_init; }
void UpdateReference(ControlReference* control, const ciface::Core::DeviceQualifier& default_device) const; void UpdateReference(ControlReference* control, const ciface::Core::DeviceQualifier& default_device) const;