System: Prevent using both runahead and rewind concurrently

This commit is contained in:
Connor McLaughlin 2021-01-25 00:56:03 +10:00
parent 3f96473fb5
commit b3ce2b21c0
2 changed files with 25 additions and 3 deletions

View file

@ -672,6 +672,19 @@ void HostInterface::FixIncompatibleSettings(bool display_osd_messages)
Log_WarningPrintf("Disabling mmap fastmem due to rewind being enabled");
g_settings.cpu_fastmem_mode = CPUFastmemMode::LUT;
}
// code compilation is too slow with runahead, use the recompiler
if (g_settings.runahead_enable && g_settings.IsUsingCodeCache())
{
Log_WarningPrintf("Code cache/recompiler disabled due to runahead");
g_settings.cpu_execution_mode = CPUExecutionMode::Interpreter;
}
if (g_settings.runahead_enable && g_settings.rewind_enable)
{
Log_WarningPrintf("Rewind disabled due to runahead being enabled");
g_settings.rewind_enable = false;
}
}
void HostInterface::SaveSettings(SettingsInterface& si)

View file

@ -101,7 +101,7 @@ void EmulationSettingsWidget::onTurboSpeedIndexChanged(int index)
void EmulationSettingsWidget::updateRewindSummaryLabel()
{
if (m_ui.rewindEnable->isChecked())
if (m_ui.rewindEnable->isEnabled() && m_ui.rewindEnable->isChecked())
{
const u32 frames = static_cast<u32>(m_ui.rewindSaveSlots->value());
const float frequency = static_cast<float>(m_ui.rewindSaveFrequency->value());
@ -121,9 +121,16 @@ void EmulationSettingsWidget::updateRewindSummaryLabel()
m_ui.rewindSaveSlots->setEnabled(true);
}
else
{
if (!m_ui.rewindEnable->isEnabled())
{
m_ui.rewindSummary->setText(tr("Rewind is disabled because runahead is enabled."));
}
else
{
m_ui.rewindSummary->setText(
tr("Rewind is not enabled. Please note that enabling rewind may significantly increase system requirements."));
}
m_ui.rewindSaveFrequency->setEnabled(false);
m_ui.rewindSaveSlots->setEnabled(false);
}
@ -132,4 +139,6 @@ void EmulationSettingsWidget::updateRewindSummaryLabel()
void EmulationSettingsWidget::updateRunaheadFields()
{
m_ui.runaheadFrames->setEnabled(m_ui.runaheadEnable->isChecked());
m_ui.rewindEnable->setEnabled(!m_ui.runaheadEnable->isChecked());
updateRewindSummaryLabel();
}