mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-24 14:49:42 -06:00
Wiimote: Fixed crash that would occur if no gamepad was detected
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@2211 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
@ -83,7 +83,7 @@ void Config::Load(bool ChangePad)
|
|||||||
|
|
||||||
/* Prevent a crash from illegal access to joyinfo that will only have values for
|
/* Prevent a crash from illegal access to joyinfo that will only have values for
|
||||||
the current amount of connected PadMapping */
|
the current amount of connected PadMapping */
|
||||||
if(WiiMoteEmu::PadMapping[i].ID >= SDL_NumJoysticks()) continue;
|
if(WiiMoteEmu::PadMapping[i].ID >= WiiMoteEmu::joyinfo.size()) continue;
|
||||||
|
|
||||||
// Create a section name
|
// Create a section name
|
||||||
SectionName = WiiMoteEmu::joyinfo[WiiMoteEmu::PadMapping[i].ID].Name;
|
SectionName = WiiMoteEmu::joyinfo[WiiMoteEmu::PadMapping[i].ID].Name;
|
||||||
@ -146,7 +146,7 @@ void Config::Save(int Slot)
|
|||||||
|
|
||||||
/* Save joypad specific settings. Check for "PadMapping[i].ID < SDL_NumJoysticks()" to
|
/* Save joypad specific settings. Check for "PadMapping[i].ID < SDL_NumJoysticks()" to
|
||||||
avoid reading a joyinfo that does't exist */
|
avoid reading a joyinfo that does't exist */
|
||||||
if(WiiMoteEmu::PadMapping[i].ID >= SDL_NumJoysticks()) continue;
|
if(WiiMoteEmu::PadMapping[i].ID >= WiiMoteEmu::joyinfo.size()) continue;
|
||||||
|
|
||||||
// Create a new section name after the joypad name
|
// Create a new section name after the joypad name
|
||||||
SectionName = WiiMoteEmu::joyinfo[WiiMoteEmu::PadMapping[i].ID].Name;
|
SectionName = WiiMoteEmu::joyinfo[WiiMoteEmu::PadMapping[i].ID].Name;
|
||||||
|
@ -1143,9 +1143,21 @@ void ConfigDialog::UpdateGUI(int Slot)
|
|||||||
m_UseRealWiimote[Page]->Enable((m_bEnableUseRealWiimote && g_RealWiiMotePresent && g_Config.bConnectRealWiimote) || !g_EmulatorRunning);
|
m_UseRealWiimote[Page]->Enable((m_bEnableUseRealWiimote && g_RealWiiMotePresent && g_Config.bConnectRealWiimote) || !g_EmulatorRunning);
|
||||||
|
|
||||||
// Linux has no FindItem()
|
// Linux has no FindItem()
|
||||||
|
// Disable all pad items if no pads are detected
|
||||||
|
if(ControlsCreated)
|
||||||
|
{
|
||||||
|
bool PadEnabled = WiiMoteEmu::NumGoodPads != 0;
|
||||||
|
#ifdef _WIN32
|
||||||
|
for(int i = IDB_ANALOG_LEFT_X; i <= IDB_TRIGGER_R; i++) m_Notebook->FindItem(i)->Enable(PadEnabled);
|
||||||
|
m_Notebook->FindItem(IDC_JOYNAME)->Enable(PadEnabled);
|
||||||
|
m_Notebook->FindItem(ID_TRIGGER_TYPE)->Enable(PadEnabled);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
// Disable all recording buttons
|
||||||
|
bool ActiveRecording = !(m_bWaitForRecording || m_bRecording);
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
// Disable all recording buttons
|
|
||||||
for(int i = IDB_RECORD + 1; i < (IDB_RECORD + RECORDING_ROWS + 1); i++)
|
for(int i = IDB_RECORD + 1; i < (IDB_RECORD + RECORDING_ROWS + 1); i++)
|
||||||
if(ControlsCreated) m_Notebook->FindItem(i)->Enable(!(m_bWaitForRecording || m_bRecording));
|
if(ControlsCreated) m_Notebook->FindItem(i)->Enable(ActiveRecording);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
@ -365,10 +365,13 @@ void SingleShake(u8 &_z, u8 &_y)
|
|||||||
// ------------------------------------------
|
// ------------------------------------------
|
||||||
/* Tilting Wiimote with gamepad. We can guess that the game will calculate a Wiimote pitch and use it as a
|
/* Tilting Wiimote with gamepad. We can guess that the game will calculate a Wiimote pitch and use it as a
|
||||||
measure of the tilting of the Wiimote. We are interested in this tilting range
|
measure of the tilting of the Wiimote. We are interested in this tilting range
|
||||||
90<EFBFBD> to -90<39> */
|
90<39> to -90<39> */
|
||||||
// ---------------
|
// ---------------
|
||||||
void TiltWiimoteGamepad(u8 &_y, u8 &_z)
|
void TiltWiimoteGamepad(u8 &_y, u8 &_z)
|
||||||
{
|
{
|
||||||
|
// Return if we have no pads
|
||||||
|
if (NumGoodPads == 0) return;
|
||||||
|
|
||||||
// Update the pad state
|
// Update the pad state
|
||||||
const int Page = 0;
|
const int Page = 0;
|
||||||
WiiMoteEmu::GetJoyState(PadState[Page], PadMapping[Page], Page, joyinfo[PadMapping[Page].ID].NumButtons);
|
WiiMoteEmu::GetJoyState(PadState[Page], PadMapping[Page], Page, joyinfo[PadMapping[Page].ID].NumButtons);
|
||||||
|
Reference in New Issue
Block a user