summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--nuklear_ui/blastem_nuklear.c7
-rw-r--r--render.h2
-rwxr-xr-xrender_sdl.c10
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();
}
}
diff --git a/render.h b/render.h
index 026c3f1..a4274c9 100644
--- a/render.h
+++ b/render.h
@@ -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);
+}
+