- SDL_Delay((unsigned int) max_int64(0, expected_delay_ms - actual_delta_ms));
- last_time = current_time;
+ render_timer -= delta_time;
+ if (render_timer <= 0) {
+ if (game_render(game) < 0) {
+ print_current_error_msg("Failed rendering the game");
+ RETURN_LT(lt, -1);
+ }
+ SDL_RenderPresent(renderer);
+ render_timer = (int64_t) roundf(1000.0f / (float) fps);
+ }
+
+ const int64_t end_frame_time = (int64_t) SDL_GetTicks();
+#define max_int64(a, b) (a > b ? a : b)
+ SDL_Delay((unsigned int) max_int64(10, delta_time - (end_frame_time - begin_frame_time)));
+#undef max_int64