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

@ -32,7 +32,6 @@ struct TimingEventsState
TimingEvent* active_events_tail = nullptr;
TimingEvent* current_event = nullptr;
u32 active_event_count = 0;
bool frame_done = false;
GlobalTicks current_event_next_run_time = 0;
GlobalTicks global_tick_counter = 0;
GlobalTicks event_run_tick_counter = 0;
@ -305,20 +304,19 @@ bool TimingEvents::IsRunningEvents()
return (s_state.current_event != nullptr);
}
void TimingEvents::SetFrameDone()
{
s_state.frame_done = true;
CPU::g_state.downcount = 0;
}
void TimingEvents::CancelRunningEvent()
{
if (!s_state.current_event)
TimingEvent* const event = s_state.current_event;
if (!event)
return;
// Might need to sort it, since we're bailing out.
if (s_state.current_event->IsActive())
SortEvent(s_state.current_event);
if (event->IsActive())
{
event->m_next_run_time = s_state.current_event_next_run_time;
SortEvent(event);
}
s_state.current_event = nullptr;
}
@ -375,12 +373,6 @@ void TimingEvents::RunEvents()
CommitGlobalTicks(new_global_ticks);
}
if (s_state.frame_done)
{
s_state.frame_done = false;
System::FrameDone();
}
if (CPU::HasPendingInterrupt())
CPU::DispatchInterrupt();