Gaphics: Make frame skip a config option

When using something like Valgrind that will run
mkxp 20 times slower than normal, frame skip will
make the redraw loop completely grind to a halt.
Set 'frameSkip' to false in the config to
avert this.
This commit is contained in:
Jonas Kulla 2013-12-21 21:18:20 +01:00
parent c504a383ba
commit 19bb6c924e
4 changed files with 17 additions and 5 deletions

View File

@ -81,6 +81,7 @@ mkxp reads configuration data from the file "mkxp.conf" contained in the current
| defScreenW | int | 640 | Width the game window starts in (this is **not** the game resolution) | | defScreenW | int | 640 | Width the game window starts in (this is **not** the game resolution) |
| defScreenH | int | 480 | Height the game window starts in | | defScreenH | int | 480 | Height the game window starts in |
| fixedFramerate | int | 0 | FPS will be fixed to this amount. Ignored if 0. | | fixedFramerate | int | 0 | FPS will be fixed to this amount. Ignored if 0. |
| frameSkip | bool | true | Don't skip frames to catch up (useful eg. with Valgrind) |
| solidFonts | bool | false | Don't use alpha blending for fonts | | solidFonts | bool | false | Don't use alpha blending for fonts |
| gameFolder | string | "." | mkxp will look for all game related files here | | gameFolder | string | "." | mkxp will look for all game related files here |
| allowSymlinks | bool | false | Allow symlinks to be followed in the game folder. | | allowSymlinks | bool | false | Allow symlinks to be followed in the game folder. |

View File

@ -38,6 +38,7 @@ Config::Config()
defScreenW(640), defScreenW(640),
defScreenH(480), defScreenH(480),
fixedFramerate(0), fixedFramerate(0),
frameSkip(true),
solidFonts(false), solidFonts(false),
gameFolder("."), gameFolder("."),
allowSymlinks(false) allowSymlinks(false)
@ -58,6 +59,7 @@ void Config::read()
READ_VAL(defScreenW, Int); READ_VAL(defScreenW, Int);
READ_VAL(defScreenH, Int); READ_VAL(defScreenH, Int);
READ_VAL(fixedFramerate, Int); READ_VAL(fixedFramerate, Int);
READ_VAL(frameSkip, Bool);
READ_VAL(solidFonts, Bool); READ_VAL(solidFonts, Bool);
READ_VAL(gameFolder, ByteArray); READ_VAL(gameFolder, ByteArray);
READ_VAL(allowSymlinks, Bool); READ_VAL(allowSymlinks, Bool);

View File

@ -41,6 +41,7 @@ struct Config
int defScreenH; int defScreenH;
int fixedFramerate; int fixedFramerate;
bool frameSkip;
bool solidFonts; bool solidFonts;

View File

@ -583,12 +583,20 @@ void Graphics::update()
if (p->fpsLimiter.frameSkipRequired()) if (p->fpsLimiter.frameSkipRequired())
{ {
/* Skip frame */ if (p->threadData->config.frameSkip)
p->fpsLimiter.delay(); {
++p->frameCount; /* Skip frame */
p->threadData->ethread->notifyFrame(); p->fpsLimiter.delay();
++p->frameCount;
p->threadData->ethread->notifyFrame();
return; return;
}
else
{
/* Just reset frame adjust counter */
p->fpsLimiter.resetFrameAdjust();
}
} }
p->checkResize(); p->checkResize();