diff options
Diffstat (limited to 'kon/konprogram.c')
| -rw-r--r-- | kon/konprogram.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/kon/konprogram.c b/kon/konprogram.c index a87aee8..2229c00 100644 --- a/kon/konprogram.c +++ b/kon/konprogram.c @@ -89,6 +89,14 @@ static void kon_cmdShake_(kon_debug_t *debug, void *user, int argc, char **argv) state->shakeLeft = 0.5f; } +static void kon_cmdMaxFps_(kon_debug_t *debug, void *user, int argc, char **argv) { + kon_programState_t *state = user; + + (void)debug; + if (argc > 1) state->pub.maxFps = atoi(argv[1]) > 0 ? atoi(argv[1]) : -1; + kon_debugLog(debug, "maxfps %d", state->pub.maxFps); +} + static void kon_addWindowCommands_(kon_programState_t *state) { kon_debug_t *debug = state->pub.debug; @@ -97,6 +105,7 @@ static void kon_addWindowCommands_(kon_programState_t *state) { kon_debugCommand(debug, "borderless", "borderless 0 or 1", kon_cmdBorderless_, state); kon_debugCommand(debug, "clickthrough", "clickthrough 0 or 1", kon_cmdClickThrough_, state); kon_debugCommand(debug, "message", "message \"text\"", kon_cmdMessage_, state); + kon_debugCommand(debug, "maxfps", "frame cap, 0 for none", kon_cmdMaxFps_, state); kon_debugCommand(debug, "shake", "shake the window", kon_cmdShake_, state); } @@ -149,8 +158,8 @@ static void kon_frame_(void *data) { kon_debugTimes(program->debug, t1 - t0, t2 - t1, t3 - t2, kon_getTime() - t4); /* only wait out what is left of the frame, a fixed sleep eats time the frame could use */ - if (config->maxFps >= 0) { - cap = 1.0 / (config->maxFps > 0 ? config->maxFps : 120); + if (program->maxFps >= 0) { + cap = 1.0 / (program->maxFps > 0 ? program->maxFps : 120); dt = kon_getTime() - now; if (dt < cap) kon_sleep(cap - dt); } @@ -204,6 +213,7 @@ int kon_programRun(const kon_programConfig_t *config) { } #endif #ifdef KON_MODULE_DEBUG + program->maxFps = config->maxFps; program->debug = kon_debugCreate(program->font); kon_debugSetAssets(program->debug, program->assets); #ifdef KON_DEVELOPER |
