HostInterface: Fix crash on startup with controller connected

This commit is contained in:
Connor McLaughlin
2020-04-06 12:18:33 +10:00
parent f41475ae8f
commit e91d760175
8 changed files with 49 additions and 35 deletions

View File

@ -59,22 +59,6 @@ bool QtHostInterface::initializeOnThread()
if (m_controller_interface)
m_controller_interface->PollEvents();
// no need to lock here because the main thread is waiting for us
m_qsettings = std::make_unique<QSettings>(QString::fromStdString(GetSettingsFileName()), QSettings::IniFormat);
QtSettingsInterface si(m_qsettings.get());
// check settings validity
const QSettings::Status settings_status = m_qsettings->status();
if (settings_status != QSettings::NoError)
{
m_qsettings->clear();
SetDefaultSettings(si);
}
// load in settings
CheckSettings(si);
m_settings.Load(si);
// bind buttons/axises
updateInputMap();
return true;
@ -417,6 +401,25 @@ void QtHostInterface::OnSystemStateSaved(bool global, s32 slot)
emit stateSaved(QString::fromStdString(m_system->GetRunningCode()), global, slot);
}
void QtHostInterface::LoadSettings()
{
// no need to lock here because the main thread is waiting for us
m_qsettings = std::make_unique<QSettings>(QString::fromStdString(GetSettingsFileName()), QSettings::IniFormat);
QtSettingsInterface si(m_qsettings.get());
// check settings validity
const QSettings::Status settings_status = m_qsettings->status();
if (settings_status != QSettings::NoError)
{
m_qsettings->clear();
SetDefaultSettings(si);
}
// load in settings
CheckSettings(si);
m_settings.Load(si);
}
void QtHostInterface::SetDefaultSettings(SettingsInterface& si)
{
CommonHostInterface::SetDefaultSettings(si);

View File

@ -133,6 +133,7 @@ protected:
void OnRunningGameChanged() override;
void OnSystemStateSaved(bool global, s32 slot) override;
void LoadSettings() override;
void SetDefaultSettings(SettingsInterface& si) override;
void UpdateInputMap() override;