TimingEvents: Don't defer frame done callback

This commit is contained in:
Stenzek
2024-08-19 19:41:14 +10:00
parent 86d4d92753
commit 41c8607782
6 changed files with 26 additions and 25 deletions

View File

@ -203,6 +203,9 @@ static u32 CompressAndWriteStateData(std::FILE* fp, std::span<const u8> src, Sav
u32* header_type, Error* error);
static bool DoState(StateWrapper& sw, GPUTexture** host_texture, bool update_display, bool is_memory_state);
static bool IsExecutionInterrupted();
static void ExitExecution();
static void SetRewinding(bool enabled);
static bool SaveRewindState();
static void DoRewind();
@ -559,6 +562,12 @@ bool System::IsExecutionInterrupted()
return s_state != State::Running || s_system_interrupted;
}
void System::ExitExecution()
{
TimingEvents::CancelRunningEvent();
CPU::ExitExecution();
}
bool System::IsPaused()
{
return s_state == State::Paused;
@ -2043,7 +2052,7 @@ void System::FrameDone()
if (IsExecutionInterrupted())
{
s_system_interrupted = false;
CPU::ExitExecution();
ExitExecution();
return;
}
}
@ -2154,7 +2163,7 @@ void System::FrameDone()
if (IsExecutionInterrupted())
{
s_system_interrupted = false;
CPU::ExitExecution();
ExitExecution();
return;
}
}