Project64-input: If setup fails clear

This commit is contained in:
zilmar 2020-07-28 21:24:59 +09:30
parent be8af060e7
commit 6c6bdaef6a
2 changed files with 19 additions and 2 deletions

View File

@ -327,7 +327,8 @@ void CControllerSettings::EnablePage(bool Enable)
void CControllerSettings::RemoveMapping(const BUTTON & Button)
{
if (!m_Controller.RemoveDuplicate)
BUTTON EmptyButton = { 0 };
if (!m_Controller.RemoveDuplicate || memcmp(&Button, &EmptyButton, sizeof(Button)) == 0)
{
return;
}
@ -341,7 +342,6 @@ void CControllerSettings::RemoveMapping(const BUTTON & Button)
};
bool Changed = false;
BUTTON EmptyButton = { 0 };
for (size_t b = 0; b < (sizeof(buttons) / sizeof(buttons[0])); b++)
{
if (buttons[b]->Offset == Button.Offset &&

View File

@ -53,6 +53,7 @@ void CScanButton::OnTimer(UINT_PTR nIDEvent)
{
if (nIDEvent == DETECT_KEY_TIMER)
{
BUTTON EmptyButton = { 0 };
bool Stop = false, ScanSuccess = false;
if (g_InputPlugin)
{
@ -60,12 +61,22 @@ void CScanButton::OnTimer(UINT_PTR nIDEvent)
CDirectInput::ScanResult Result = g_InputPlugin->ScanDevices(Button);
if (Result == CDirectInput::SCAN_SUCCEED && (Button.Offset != m_Button.Offset || Button.AxisID != m_Button.AxisID || Button.BtnType != m_Button.BtnType))
{
m_ScanBtn.KillTimer(DETECT_KEY_TIMER);
if (m_ChangeCallback != nullptr)
{
m_ChangeCallback(m_ChangeCallbackData, Button);
}
m_Button = Button;
}
if (Result == CDirectInput::SCAN_ESCAPE && (EmptyButton.Offset != m_Button.Offset || EmptyButton.AxisID != m_Button.AxisID || EmptyButton.BtnType != m_Button.BtnType))
{
m_ScanBtn.KillTimer(DETECT_KEY_TIMER);
if (m_ChangeCallback != nullptr)
{
m_ChangeCallback(m_ChangeCallbackData, EmptyButton);
}
m_Button = EmptyButton;
}
if (Result == CDirectInput::SCAN_SUCCEED || Result == CDirectInput::SCAN_ESCAPE)
{
ScanSuccess = Result == CDirectInput::SCAN_SUCCEED;
@ -83,6 +94,12 @@ void CScanButton::OnTimer(UINT_PTR nIDEvent)
}
else
{
if (m_ChangeCallback != nullptr)
{
m_ChangeCallback(m_ChangeCallbackData, EmptyButton);
}
m_Button = EmptyButton;
DisplayButton();
Stop = true;
}
}