GBA: Break infinite loop for 0-frame mVLs (fixes #1723)

This commit is contained in:
Vicki Pfau 2020-06-07 18:35:00 -07:00
parent ee6bbaf61c
commit b4a8df053f
2 changed files with 3 additions and 1 deletions

View File

@ -38,6 +38,7 @@ Other fixes:
- Core: Fix crash modifying hash table entry (fixes mgba.io/i/1673)
- GB Video: Fix some cases where SGB border doesn't draw to mutli-buffers
- GBA: Reject incorrectly sized BIOSes
- GBA: Break infinite loop for 0-frame mVLs (fixes mgba.io/i/1723)
- Debugger: Don't skip undefined instructions when debugger attached
- Qt: Force OpenGL paint engine creation thread (fixes mgba.io/i/1642)
- Qt: Fix OpenGL 2.1 support (fixes mgba.io/i/1678)

View File

@ -643,7 +643,8 @@ static void _GBACoreReset(struct mCore* core) {
static void _GBACoreRunFrame(struct mCore* core) {
struct GBA* gba = core->board;
int32_t frameCounter = gba->video.frameCounter;
while (gba->video.frameCounter == frameCounter) {
uint32_t startCycle = mTimingCurrentTime(&gba->timing);
while (gba->video.frameCounter == frameCounter && mTimingCurrentTime(&gba->timing) - startCycle < VIDEO_TOTAL_LENGTH) {
ARMRunLoop(core->cpu);
}
}