From d401db77f0a89d9b2a62ce9aa376032a889de5a3 Mon Sep 17 00:00:00 2001 From: Jeffrey Pfau Date: Mon, 29 Aug 2016 00:17:03 -0700 Subject: [PATCH] GB Video: Fix frame-starting callbacks happening too many times --- src/gb/video.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/gb/video.c b/src/gb/video.c index 91b857e22..f6949335d 100644 --- a/src/gb/video.c +++ b/src/gb/video.c @@ -155,6 +155,11 @@ int32_t GBVideoProcessEvents(struct GBVideo* video, int32_t cycles) { GBUpdateIRQs(video->p); } video->renderer->finishFrame(video->renderer); + if (video->p->memory.mbcType == GB_MBC7 && video->p->memory.rotation && video->p->memory.rotation->sample) { + video->p->memory.rotation->sample(video->p->memory.rotation); + } + struct mCoreThread* thread = mCoreThreadGet(); + mCoreThreadFrameStarted(thread); break; } else if (video->ly == GB_VIDEO_VERTICAL_TOTAL_PIXELS) { video->p->memory.io[REG_LY] = 0; @@ -172,11 +177,6 @@ int32_t GBVideoProcessEvents(struct GBVideo* video, int32_t cycles) { video->p->memory.io[REG_IF] |= (1 << GB_IRQ_LCDSTAT); GBUpdateIRQs(video->p); } - if (video->p->memory.mbcType == GB_MBC7 && video->p->memory.rotation && video->p->memory.rotation->sample) { - video->p->memory.rotation->sample(video->p->memory.rotation); - } - struct mCoreThread* thread = mCoreThreadGet(); - mCoreThreadFrameStarted(thread); break; case 2: _cleanOAM(video, video->ly);