From 1426a5c7681b09a65908d95adc2456e3e9656294 Mon Sep 17 00:00:00 2001 From: ayuanx Date: Wed, 20 Jan 2010 17:01:38 +0000 Subject: [PATCH] This should fix Issue 1982 & Issue 2042 git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@4908 8ced0084-cf51-0410-be5f-012b33b47a6e --- Source/Core/InputCommon/Src/SDL.cpp | 2 +- Source/Plugins/Plugin_Wiimote/Src/Config.cpp | 2 +- Source/Plugins/Plugin_Wiimote/Src/EmuPad.cpp | 24 ++++++++++++-------- Source/Plugins/Plugin_nJoy_SDL/Src/nJoy.cpp | 23 ++++++++++++------- 4 files changed, 31 insertions(+), 20 deletions(-) diff --git a/Source/Core/InputCommon/Src/SDL.cpp b/Source/Core/InputCommon/Src/SDL.cpp index 057b2f752a..9a77a92cfa 100644 --- a/Source/Core/InputCommon/Src/SDL.cpp +++ b/Source/Core/InputCommon/Src/SDL.cpp @@ -103,7 +103,7 @@ bool SearchDevices(std::vector &_joyinfo, int &_NumPads, int &_ _joyinfo.push_back(Tmp); // We have now read the values we need so we close the device - if (SDL_JoystickOpened(i)) SDL_JoystickClose(_joyinfo[i].joy); +// if (SDL_JoystickOpened(i)) SDL_JoystickClose(_joyinfo[i].joy); } _NumPads = (int)_joyinfo.size(); diff --git a/Source/Plugins/Plugin_Wiimote/Src/Config.cpp b/Source/Plugins/Plugin_Wiimote/Src/Config.cpp index 09a6058e14..2758b8d642 100644 --- a/Source/Plugins/Plugin_Wiimote/Src/Config.cpp +++ b/Source/Plugins/Plugin_Wiimote/Src/Config.cpp @@ -320,7 +320,7 @@ void Config::Load() iniFile.Get(SectionName, "DeadZoneR", &WiiMoteEmu::WiiMapping[i].DeadZoneR, 0); iniFile.Get(SectionName, "Diagonal", &WiiMoteEmu::WiiMapping[i].Diagonal, "100%"); iniFile.Get(SectionName, "Circle2Square", &WiiMoteEmu::WiiMapping[i].bCircle2Square, false); - iniFile.Get(SectionName, "Rumble", &WiiMoteEmu::WiiMapping[i].Rumble, true); + iniFile.Get(SectionName, "Rumble", &WiiMoteEmu::WiiMapping[i].Rumble, false); iniFile.Get(SectionName, "RumbleStrength", &WiiMoteEmu::WiiMapping[i].RumbleStrength, 8); // x10 iniFile.Get(SectionName, "TriggerType", &WiiMoteEmu::WiiMapping[i].TriggerType, 0); } diff --git a/Source/Plugins/Plugin_Wiimote/Src/EmuPad.cpp b/Source/Plugins/Plugin_Wiimote/Src/EmuPad.cpp index 90e283b8f5..00f4d2468d 100644 --- a/Source/Plugins/Plugin_Wiimote/Src/EmuPad.cpp +++ b/Source/Plugins/Plugin_Wiimote/Src/EmuPad.cpp @@ -48,20 +48,24 @@ void Close_Devices() PAD_RumbleClose(); // Close all devices carefully. We must check that we are not accessing any // undefined vector elements or any bad devices - for (int i = 0; i < MAX_WIIMOTES; i++) + if (SDL_WasInit(0)) { - if (SDL_WasInit(0) && joyinfo.size() > (u32)WiiMapping[i].ID) - if (WiiMapping[i].joy && joyinfo.at(WiiMapping[i].ID).Good) + for (int i = 0; i < NumPads; i++) + { + if (joyinfo.at(i).joy) { - INFO_LOG(WIIMOTE, "ShutDown: %i", WiiMapping[i].ID); - if(SDL_JoystickOpened(WiiMapping[i].ID)) + if(SDL_JoystickOpened(i)) { - SDL_JoystickClose(WiiMapping[i].joy); - WiiMapping[i].joy = NULL; + INFO_LOG(WIIMOTE, "Shut down Joypad: %i", i); + SDL_JoystickClose(joyinfo.at(i).joy); } } + } } + for (int i = 0; i < MAX_WIIMOTES; i++) + WiiMapping[i].joy = NULL; + // Clear the physical device info joyinfo.clear(); NumPads = 0; @@ -83,9 +87,9 @@ bool Search_Devices(std::vector &_joyinfo, int &_N // Update the PadState[].joy handle for (int i = 0; i < MAX_WIIMOTES; i++) { - if (joyinfo.size() > (u32)WiiMapping[i].ID) - if(joyinfo.at(WiiMapping[i].ID).Good) - WiiMapping[i].joy = SDL_JoystickOpen(WiiMapping[i].ID); + if (_NumPads > (u32)WiiMapping[i].ID) + if(_joyinfo.at(WiiMapping[i].ID).Good) + WiiMapping[i].joy = _joyinfo.at(WiiMapping[i].ID).joy; } return WasGotten; diff --git a/Source/Plugins/Plugin_nJoy_SDL/Src/nJoy.cpp b/Source/Plugins/Plugin_nJoy_SDL/Src/nJoy.cpp index 2327fc3524..3fd83e7d9c 100644 --- a/Source/Plugins/Plugin_nJoy_SDL/Src/nJoy.cpp +++ b/Source/Plugins/Plugin_nJoy_SDL/Src/nJoy.cpp @@ -211,17 +211,24 @@ void Close_Devices() PAD_RumbleClose(); /* Close all devices carefully. We must check that we are not accessing any undefined vector elements or any bad devices */ - for (int i = 0; i < 4; i++) + if (SDL_WasInit(0)) { - if (SDL_WasInit(0) && joyinfo.size() > (u32)PadMapping[i].ID) - if (PadState[i].joy && joyinfo.at(PadMapping[i].ID).Good) - if(SDL_JoystickOpened(PadMapping[i].ID)) + for (int i = 0; i < NumPads; i++) + { + if (joyinfo.at(i).joy) + { + if(SDL_JoystickOpened(i)) { - SDL_JoystickClose(PadState[i].joy); - PadState[i].joy = NULL; + INFO_LOG(WIIMOTE, "Shut down Joypad: %i", i); + SDL_JoystickClose(joyinfo.at(i).joy); } + } + } } + for (int i = 0; i < 4; i++) + PadState[i].joy = NULL; + // Clear the physical device info joyinfo.clear(); NumPads = 0; @@ -478,9 +485,9 @@ bool Search_Devices(std::vector &_joyinfo, int &_N // Update the PadState[].joy handle for (int i = 0; i < 4; i++) { - if (joyinfo.size() > (u32)PadMapping[i].ID) + if (_NumPads > (u32)PadMapping[i].ID) if(joyinfo.at(PadMapping[i].ID).Good) - PadState[i].joy = SDL_JoystickOpen(PadMapping[i].ID); + PadState[i].joy = joyinfo.at(PadMapping[i].ID).joy; } return Success;