GPU: Don't recursively execute commands

This can happen with interlaced rendering on when a line is pending
scanout and a primitive is drawn.

Fixes screen transitions in Slap Happy Rhythm Busters.
This commit is contained in:
Connor McLaughlin 2020-05-17 17:58:47 +10:00
parent 0bdac9e4be
commit 664bd06df6

View file

@ -619,7 +619,11 @@ void GPU::Execute(TickCount ticks)
if (m_command_ticks > 0) if (m_command_ticks > 0)
{ {
m_command_ticks -= gpu_ticks; m_command_ticks -= gpu_ticks;
ExecuteCommands();
// we can be syncing if this came from a DMA write. recursively executing commands would be bad.
if (!m_syncing)
ExecuteCommands();
if (m_command_ticks < 0) if (m_command_ticks < 0)
m_command_ticks = 0; m_command_ticks = 0;
} }