diff options
-rw-r--r-- | nuklear_ui/blastem_nuklear.c | 7 | ||||
-rw-r--r-- | render.h | 2 | ||||
-rwxr-xr-x | render_sdl.c | 10 |
3 files changed, 19 insertions, 0 deletions
diff --git a/nuklear_ui/blastem_nuklear.c b/nuklear_ui/blastem_nuklear.c index bcff610..4785de6 100644 --- a/nuklear_ui/blastem_nuklear.c +++ b/nuklear_ui/blastem_nuklear.c @@ -206,8 +206,15 @@ void blastem_nuklear_render(void) void idle_loop(void) { + const uint32_t MIN_UI_DELAY = 15; + static uint32_t last; while (current_view != view_play) { + uint32_t current = render_elapsed_ms(); + if ((current - last) < MIN_UI_DELAY) { + render_sleep_ms(MIN_UI_DELAY - (current - last) - 1); + } + last = current; render_update_display(); } } @@ -103,6 +103,8 @@ uint32_t render_emulated_width(); uint32_t render_emulated_height(); uint32_t render_overscan_top(); uint32_t render_overscan_left(); +uint32_t render_elapsed_ms(void); +void render_sleep_ms(uint32_t delay); #endif //RENDER_H_ diff --git a/render_sdl.c b/render_sdl.c index 2c45071..4d33f72 100755 --- a/render_sdl.c +++ b/render_sdl.c @@ -1220,3 +1220,13 @@ void render_infobox(char *title, char *message) SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_INFORMATION, title, message, NULL); } +uint32_t render_elapsed_ms(void) +{ + return SDL_GetTicks(); +} + +void render_sleep_ms(uint32_t delay) +{ + return SDL_Delay(delay); +} + |