Added frame advance delay config parameter to Qt GUI and set delay default to 40 frames to match win port timing. Also, reset frameAdvance_Delay_count to zero before setting frameAdvanceRequested flag to avoid possible race condition where emulation thread can miss seeing zero count and not temporarily pause when it should.

This commit is contained in:
harry 2023-02-01 01:06:48 -05:00
parent b602de6ce0
commit 2d81c9c7b2
3 changed files with 7 additions and 2 deletions

View File

@ -3640,6 +3640,9 @@ void consoleWin_t::emuSetFrameAdvDelay(void)
if ( QDialog::Accepted == ret )
{
frameAdvance_Delay = dialog.intValue();
g_config->setOption("SDL.FrameAdvanceDelay", frameAdvance_Delay );
g_config->save();
}
}

View File

@ -522,6 +522,7 @@ InitConfig()
config->addOption("nospritelim", "SDL.DisableSpriteLimit", 0);
config->addOption("swapduty", "SDL.SwapDuty", 0);
config->addOption("ramInit", "SDL.RamInitMethod", 0);
config->addOption("SDL.FrameAdvanceDelay", 40);
// color control
config->addOption('p', "palette", "SDL.Palette", "");
@ -1094,6 +1095,7 @@ UpdateEMUCore(Config *config)
config->getOption("SDL.VBlankScanlines" , &vblankscanlines );
config->getOption("SDL.Skip7bitOverClocking", &skip_7bit_overclocking );
config->getOption("SDL.ShowGuiMessages" , &vidGuiMsgEna );
config->getOption("SDL.FrameAdvanceDelay" , &frameAdvance_Delay );
config->getOption("SDL.PAL", &region);
FCEUI_SetRegion(region);

View File

@ -1250,8 +1250,8 @@ void FCEUI_FrameAdvanceEnd(void) {
}
void FCEUI_FrameAdvance(void) {
frameAdvanceRequested = true;
frameAdvance_Delay_count = 0;
frameAdvanceRequested = true;
}
static int AutosaveCounter = 0;
@ -1268,7 +1268,7 @@ void UpdateAutosave(void) {
FCEUSS_Save(f, false);
AutoSS = true; //Flag that an auto-savestate was made
free(f);
f = NULL;
f = NULL;
AutosaveStatus[AutosaveIndex] = 1;
}
}