about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorCharadon <dev@iotib.net>2022-06-13 03:06:57 -0400
committerCharadon <dev@iotib.net>2022-06-13 03:06:57 -0400
commita1f0c28548dce172cdb56b69c07d8bfee1c00d15 (patch)
tree4c36f0cddced1ba8971dc8b445232a51ae55931f
parentbe121c63b03cf4b36793351ae0d733866512bd4c (diff)
downloadPong-C-a1f0c28548dce172cdb56b69c07d8bfee1c00d15.tar.gz
Maybe made clock more accurate? Needs testing
-rw-r--r--src/main.c20
1 files changed, 19 insertions, 1 deletions
diff --git a/src/main.c b/src/main.c
index 6f2e96e..4886523 100644
--- a/src/main.c
+++ b/src/main.c
@@ -51,10 +51,28 @@ static int internal_clock() {
 	const struct timespec Delay = {
 		0, 16666666
 	};
-	struct timespec Remaining;
+	struct timespec Remaining = {
+		0, 0
+	};
+	bool Lock = true;
 	while(GameGoing == true) {
 		SDL_AtomicAdd(&Ticks, 1);
 		nanosleep(&Delay, &Remaining);
+		if (Remaining.tv_nsec != 0 && Remaining.tv_sec != 0) {
+			Lock = true;
+			double InitialTime = GetTime();
+			double TotalRemainingTime = (Remaining.tv_sec/1000000000.0f)+(Remaining.tv_nsec*1000000000.0f);
+			while(Lock == true) {
+				double CurrentTime = GetTime() - InitialTime;
+				TotalRemainingTime -= CurrentTime;
+				if(TotalRemainingTime <= 0) {
+					Lock = false;
+				}
+			}
+		} else {
+			Lock = false;
+		}
+		
 	}
 	return(0);
 }