Fixed joystick switch crash; small bugfix to joystick UI
parent
7a521fbc90
commit
5f01153c5f
|
@ -684,6 +684,7 @@ bool CApplication::OpenJoystick()
|
||||||
if ( (m_joystick.index < 0) || (m_joystick.index >= SDL_NumJoysticks()) )
|
if ( (m_joystick.index < 0) || (m_joystick.index >= SDL_NumJoysticks()) )
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
assert(m_private->joystick == nullptr);
|
||||||
GetLogger()->Info("Opening joystick %d\n", m_joystick.index);
|
GetLogger()->Info("Opening joystick %d\n", m_joystick.index);
|
||||||
|
|
||||||
m_private->joystick = SDL_JoystickOpen(m_joystick.index);
|
m_private->joystick = SDL_JoystickOpen(m_joystick.index);
|
||||||
|
|
|
@ -244,7 +244,8 @@ void CScreenSetupControls::ChangeSetupButtons()
|
||||||
{
|
{
|
||||||
if (pli->GetSelect() > 0)
|
if (pli->GetSelect() > 0)
|
||||||
{
|
{
|
||||||
m_app->ChangeJoystick(m_app->GetJoystickList()[pli->GetSelect()-1]);
|
m_app->SetJoystickEnabled(false);
|
||||||
|
m_app->ChangeJoystick(m_app->GetJoystickList().at(pli->GetSelect()-1));
|
||||||
m_app->SetJoystickEnabled(true);
|
m_app->SetJoystickEnabled(true);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -328,45 +329,45 @@ void CScreenSetupControls::UpdateSetupButtons()
|
||||||
{
|
{
|
||||||
pli->SetItemName(1 + i, joysticks[i].name.c_str());
|
pli->SetItemName(1 + i, joysticks[i].name.c_str());
|
||||||
}
|
}
|
||||||
pli->SetSelect(m_app->GetJoystick().index + 1);
|
pli->SetSelect(m_app->GetJoystickEnabled() ? m_app->GetJoystick().index + 1 : 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (nullptr != (pev = static_cast<CEditValue*>(pw->SearchControl(EVENT_INTERFACE_JOYSTICK_X))))
|
if (nullptr != (pev = static_cast<CEditValue*>(pw->SearchControl(EVENT_INTERFACE_JOYSTICK_X))))
|
||||||
{
|
{
|
||||||
pev->SetState(STATE_ENABLE, m_app->GetJoystick().index >= 0);
|
pev->SetState(STATE_ENABLE, m_app->GetJoystickEnabled());
|
||||||
pev->SetMaxValue(m_app->GetJoystick().axisCount-1);
|
pev->SetMaxValue(m_app->GetJoystick().axisCount-1);
|
||||||
pev->SetValue(m_input->GetJoyAxisBinding(JOY_AXIS_SLOT_X).axis);
|
pev->SetValue(m_input->GetJoyAxisBinding(JOY_AXIS_SLOT_X).axis);
|
||||||
}
|
}
|
||||||
if (nullptr != (pc = static_cast<CCheck*>(pw->SearchControl(EVENT_INTERFACE_JOYSTICK_X_INVERT))))
|
if (nullptr != (pc = static_cast<CCheck*>(pw->SearchControl(EVENT_INTERFACE_JOYSTICK_X_INVERT))))
|
||||||
{
|
{
|
||||||
pc->SetState(STATE_ENABLE, m_app->GetJoystick().index >= 0);
|
pc->SetState(STATE_ENABLE, m_app->GetJoystickEnabled());
|
||||||
pc->SetState(STATE_CHECK, m_input->GetJoyAxisBinding(JOY_AXIS_SLOT_X).invert);
|
pc->SetState(STATE_CHECK, m_input->GetJoyAxisBinding(JOY_AXIS_SLOT_X).invert);
|
||||||
}
|
}
|
||||||
if (nullptr != (pev = static_cast<CEditValue*>(pw->SearchControl(EVENT_INTERFACE_JOYSTICK_Y))))
|
if (nullptr != (pev = static_cast<CEditValue*>(pw->SearchControl(EVENT_INTERFACE_JOYSTICK_Y))))
|
||||||
{
|
{
|
||||||
pev->SetState(STATE_ENABLE, m_app->GetJoystick().index >= 0);
|
pev->SetState(STATE_ENABLE, m_app->GetJoystickEnabled());
|
||||||
pev->SetMaxValue(m_app->GetJoystick().axisCount-1);
|
pev->SetMaxValue(m_app->GetJoystick().axisCount-1);
|
||||||
pev->SetValue(m_input->GetJoyAxisBinding(JOY_AXIS_SLOT_Y).axis);
|
pev->SetValue(m_input->GetJoyAxisBinding(JOY_AXIS_SLOT_Y).axis);
|
||||||
}
|
}
|
||||||
if (nullptr != (pc = static_cast<CCheck*>(pw->SearchControl(EVENT_INTERFACE_JOYSTICK_Y_INVERT))))
|
if (nullptr != (pc = static_cast<CCheck*>(pw->SearchControl(EVENT_INTERFACE_JOYSTICK_Y_INVERT))))
|
||||||
{
|
{
|
||||||
pc->SetState(STATE_ENABLE, m_app->GetJoystick().index >= 0);
|
pc->SetState(STATE_ENABLE, m_app->GetJoystickEnabled());
|
||||||
pc->SetState(STATE_CHECK, m_input->GetJoyAxisBinding(JOY_AXIS_SLOT_Y).invert);
|
pc->SetState(STATE_CHECK, m_input->GetJoyAxisBinding(JOY_AXIS_SLOT_Y).invert);
|
||||||
}
|
}
|
||||||
if (nullptr != (pev = static_cast<CEditValue*>(pw->SearchControl(EVENT_INTERFACE_JOYSTICK_Z))))
|
if (nullptr != (pev = static_cast<CEditValue*>(pw->SearchControl(EVENT_INTERFACE_JOYSTICK_Z))))
|
||||||
{
|
{
|
||||||
pev->SetState(STATE_ENABLE, m_app->GetJoystick().index >= 0);
|
pev->SetState(STATE_ENABLE, m_app->GetJoystickEnabled());
|
||||||
pev->SetMaxValue(m_app->GetJoystick().axisCount-1);
|
pev->SetMaxValue(m_app->GetJoystick().axisCount-1);
|
||||||
pev->SetValue(m_input->GetJoyAxisBinding(JOY_AXIS_SLOT_Z).axis);
|
pev->SetValue(m_input->GetJoyAxisBinding(JOY_AXIS_SLOT_Z).axis);
|
||||||
}
|
}
|
||||||
if (nullptr != (pc = static_cast<CCheck*>(pw->SearchControl(EVENT_INTERFACE_JOYSTICK_Z_INVERT))))
|
if (nullptr != (pc = static_cast<CCheck*>(pw->SearchControl(EVENT_INTERFACE_JOYSTICK_Z_INVERT))))
|
||||||
{
|
{
|
||||||
pc->SetState(STATE_ENABLE, m_app->GetJoystick().index >= 0);
|
pc->SetState(STATE_ENABLE, m_app->GetJoystickEnabled());
|
||||||
pc->SetState(STATE_CHECK, m_input->GetJoyAxisBinding(JOY_AXIS_SLOT_Z).invert);
|
pc->SetState(STATE_CHECK, m_input->GetJoyAxisBinding(JOY_AXIS_SLOT_Z).invert);
|
||||||
}
|
}
|
||||||
if (nullptr != (pev = static_cast<CEditValue*>(pw->SearchControl(EVENT_INTERFACE_JOYSTICK_DEADZONE))))
|
if (nullptr != (pev = static_cast<CEditValue*>(pw->SearchControl(EVENT_INTERFACE_JOYSTICK_DEADZONE))))
|
||||||
{
|
{
|
||||||
pev->SetState(STATE_ENABLE, m_app->GetJoystick().index >= 0);
|
pev->SetState(STATE_ENABLE, m_app->GetJoystickEnabled());
|
||||||
pev->SetValue(m_input->GetJoystickDeadzone());
|
pev->SetValue(m_input->GetJoystickDeadzone());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue