Mercurial > molko
changeset 583:5a4e5b852f8a
core: make sure we never exceed 60FPS ticks
author | David Demelier <markand@malikania.fr> |
---|---|
date | Mon, 13 Mar 2023 13:07:48 +0100 |
parents | 8a7648480e2d |
children | f2737a931658 |
files | examples/example-map/example-map.c libmlk-core/mlk/core/game.c |
diffstat | 2 files changed, 11 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/examples/example-map/example-map.c Mon Mar 13 13:01:21 2023 +0100 +++ b/examples/example-map/example-map.c Mon Mar 13 13:07:48 2023 +0100 @@ -197,9 +197,8 @@ mlk_map_update(&map, ticks); - if (tomb.message.state && mlk_message_update(&tomb.message, ticks)) { - - } + if (tomb.message.state) + mlk_message_update(&tomb.message, ticks); } static void
--- a/libmlk-core/mlk/core/game.c Mon Mar 13 13:01:21 2023 +0100 +++ b/libmlk-core/mlk/core/game.c Mon Mar 13 13:07:48 2023 +0100 @@ -109,8 +109,8 @@ if (mlk_window.framerate > 0) frametime = 1000 / mlk_window.framerate; else - /* Assuming 50.0 FPS. */ - frametime = 1000.0 / 50.0; + /* Assuming 60.0 FPS. */ + frametime = 1000.0 / 60.0; while (mlk_game.state) { mlk_clock_start(&clock); @@ -129,6 +129,13 @@ mlk_util_delay(frametime - elapsed); elapsed = mlk_clock_elapsed(&clock); + + /* + * Cap to frametime if it's too slow because it would create + * unexpected results otherwise. + */ + if (elapsed > frametime) + elapsed = frametime; } }