hrydgard/ppsspp — pull request #6143 by unknownbrackets (2014-05-26 01:57:28+00:00)
Title: Don't block duplicate enqueues when intr pending

What happens is the game has list data like this:

STUFF
FINISH
END
MORE STUFF
FINISH
END

After enqueuing the first END, it tries to enqueue MORE STUFF. However, if the previous list already finished, but hasn't run the interrupt yet, its pc points to MORE STUFF (even though MORE STUFF will never be executed), so it bails.

The duplicate check is most likely only on the last known pc, so I suspect there's never a case on a real PSP where MORE STUFF can be seen as a duplicate address - it's either finished/dequeued, or still running, but either way never pointing to MORE STUFF.

-[Unknown]