From 2cee9a1eb9bd99cdfc98923af4c5449ad8e6fe8c Mon Sep 17 00:00:00 2001 From: rogerman Date: Wed, 11 Mar 2015 06:36:33 +0000 Subject: [PATCH] =?UTF-8?q?Cocoa=20Port:=20-=20Fix=20bug=20where=20the=20f?= =?UTF-8?q?rame=20wouldn=E2=80=99t=20update=20itself=20when=20starting/sto?= =?UTF-8?q?pping=20GDB=20stub,=20frame=20advance,=20or=20frame=20jump=20un?= =?UTF-8?q?der=20certain=20conditions.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- desmume/src/cocoa/cocoa_core.mm | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/desmume/src/cocoa/cocoa_core.mm b/desmume/src/cocoa/cocoa_core.mm index 1d78e828f..e2db7f400 100644 --- a/desmume/src/cocoa/cocoa_core.mm +++ b/desmume/src/cocoa/cocoa_core.mm @@ -314,6 +314,7 @@ volatile bool execute = true; { threadParam.isFrameSkipEnabled = false; threadParam.framesToSkip = 0; + NDS_OmitFrameSkip(2); } pthread_mutex_unlock(&threadParam.mutexThreadExecute); @@ -460,6 +461,7 @@ volatile bool execute = true; if (isInDebugTrap && !theState) { threadParam.framesToSkip = 0; + NDS_OmitFrameSkip(2); } isInDebugTrap = theState; @@ -636,6 +638,7 @@ volatile bool execute = true; threadParam.state = coreState; threadParam.framesToSkip = 0; + NDS_OmitFrameSkip(2); switch (coreState) { @@ -1227,7 +1230,12 @@ static void* RunCoreThread(void *arg) } else if (param->state == CORESTATE_FRAMEJUMP) { - if (frameNum >= param->frameJumpTarget) + if (frameNum == (param->frameJumpTarget - 1)) + { + param->framesToSkip = 0; + NDS_OmitFrameSkip(2); + } + else if (frameNum >= param->frameJumpTarget) { [cdsCore restoreCoreState]; }