[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH 2/2] pong: Nicht 100% CPU benutzen



! pong: Wenn man merkt, dass es gerade nichts zu tun gibt, weil es zu
  früh für den nächsten Frame ist, dann kann man das Bild neu zeichnen
  und die CPU damit beschäftigt halten. Alternativ kann man aber auch
  einfach schlafen bis der nächste Frame dran ist. Machen wir mal lieber
  letzteres, dann ist mein Lüfter nicht so laut beim Spielen.

Signed-off-by: Kevin Wolf <kevin@xxxxxxxxxx>
---
 src/modules/c/pong/main.c | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

diff --git a/src/modules/c/pong/main.c b/src/modules/c/pong/main.c
index cb79c803c..75d5cb499 100644
--- a/src/modules/c/pong/main.c
+++ b/src/modules/c/pong/main.c
@@ -36,6 +36,7 @@
 #include <init.h>
 #include <kbd.h>
 #include <lostio.h>
+#include <sleep.h>
 
 //------------------------------------------------------------------------------
 // Types und Structs
@@ -369,12 +370,16 @@ static void run(void)
         delta_time += current_time - time_last_update;
         time_last_update = current_time;
 
-        while (delta_time >= time_per_frame) {
-            delta_time -= time_per_frame;
-            update_player();
-            update_ball();
+        if (delta_time < time_per_frame) {
+            sleep_ns(time_per_frame - delta_time);
+        } else {
+            while (delta_time >= time_per_frame) {
+                delta_time -= time_per_frame;
+                update_player();
+                update_ball();
+            }
+            render();
         }
-        render();
     }
     close_screen();
 }
-- 
2.26.2