From 4bd64ea2264163eed3a23587430461ba7445484c Mon Sep 17 00:00:00 2001 From: Max Bernstein Date: Sun, 11 Aug 2024 15:00:30 -0400 Subject: [PATCH] Only sleep for the rest of the frame budget Previously, we were sleeping as long as the paint took. Now, we only sleep for the rest of the allotted budget (if any). Thanks to @lgarbarini for helping debug. --- fenster.h | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/fenster.h b/fenster.h index ed4332e..32836e8 100644 --- a/fenster.h +++ b/fenster.h @@ -350,8 +350,11 @@ public: } bool loop(const int fps) { int64_t t = fenster_time(); - if (t - this->now < 1000 / fps) { - fenster_sleep(t - now); + int64_t paint_time = t - this->now; + int64_t frame_budget = 1000 / fps; + int64_t sleep_time = frame_budget - paint_time; + if (sleep_time > 0) { + fenster_sleep(sleep_time); } this->now = t; return fenster_loop(&this->f) == 0;