From a39342d1a7e690d6591a06fe641e5c5702dad5b9 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Tue, 15 Dec 2020 21:53:10 -0500 Subject: game-loop: Sleep after rendering a frame, not after update. --- chickadee/game-loop.scm | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/chickadee/game-loop.scm b/chickadee/game-loop.scm index 6a14fab..1d0c679 100644 --- a/chickadee/game-loop.scm +++ b/chickadee/game-loop.scm @@ -72,7 +72,7 @@ ;; the game on a fixed timestep like this yields a ;; stable simulation. (let loop ((previous-time (time)) - (buffer 0)) + (buffer 0.0)) (let* ((current-time (time)) (delta (- current-time previous-time))) (let update-loop ((buffer (+ buffer delta))) @@ -82,17 +82,17 @@ ;; order to discard the undefined amount of time ;; that was spent handling the error. (if (with-error-handling error (update timestep)) - (loop (time) 0) - (begin - (usleep 1) - (update-loop (- buffer timestep)))) + (loop (time) 0.0) + (update-loop (- buffer timestep))) (begin ;; We render upon every iteration of the loop, and ;; thus rendering is decoupled from updating. ;; It's possible to render multiple times before ;; an update is performed. - (if (with-error-handling error (render (/ buffer timestep))) - (loop (time) 0) + (if (with-error-handling error + (render (/ buffer timestep)) + (usleep 1)) + (loop (time) 0.0) (loop current-time buffer)))))))) (lambda (cont callback) #f)))) -- cgit v1.2.3