about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorCharadon <dev@iotib.net>2022-06-13 15:27:04 -0400
committerCharadon <dev@iotib.net>2022-06-13 15:27:04 -0400
commit129c32fc63270fd622de10eb6bb336ba4702a4e6 (patch)
treebbe7ad6f4050304eb922abd6fc6fd89f6d0a7f40
parentbba57e993eff1f73bf7e6d6e263e2dced0a2c859 (diff)
downloadPong-C-129c32fc63270fd622de10eb6bb336ba4702a4e6.tar.gz
Maybe this will work
-rw-r--r--src/main.c29
-rw-r--r--src/title.c1
2 files changed, 14 insertions, 16 deletions
diff --git a/src/main.c b/src/main.c
index aebc6aa..d15877e 100644
--- a/src/main.c
+++ b/src/main.c
@@ -1,4 +1,7 @@
 #include "pong.h"
+#include <SDL2/SDL_atomic.h>
+#include <SDL2/SDL_thread.h>
+#include <SDL2/SDL_timer.h>
 #include <raylib.h>
 
 int Difficulty = 1;
@@ -49,25 +52,19 @@ void set_screen_mode() {
 }
 
 static int internal_clock() {
-	const struct timespec Delay = {
-		0, 9999
-	};
-	struct timespec Remaining = {
-		0, 0
-	};
-	double OldTime = GetTime();
+	SDL_SetThreadPriority(SDL_THREAD_PRIORITY_TIME_CRITICAL);
+	double NewTime = 0;
+	double OldTime = 0;
+	double Milliseconds = (1000.0/60)/1000.0;
+	double DeltaTime = 0;
 	while(GameGoing == true) {
-		//nanosleep(&Delay, &Remaining);
-		double NewTime = GetTime();
-		while((NewTime-OldTime) < (1.0/60.0f)) {
-			NewTime = GetTime();
-		}	
-		if((NewTime-OldTime) >= (1.0/60.0f)) {
+		NewTime = SDL_GetTicks()/1000.0f;
+		DeltaTime += (NewTime-OldTime)/Milliseconds;
+		OldTime = NewTime;
+		while(DeltaTime >= 1.0) {
 			SDL_AtomicAdd(&Ticks, 1);
-			OldTime = GetTime();
+			DeltaTime--;
 		}
-
-		printf("%lf,%lf,%d\n", GetTime(),(NewTime-OldTime), SDL_AtomicGet(&Ticks));
 	}
 	return(0);
 }
diff --git a/src/title.c b/src/title.c
index 5c8987c..c5a15ce 100644
--- a/src/title.c
+++ b/src/title.c
@@ -397,6 +397,7 @@ int title_screen() {
 
     while(TitleScreenGoing == true && GameGoing == true) {
         
+	printf("%lf, %d\n", GetTime(), SDL_AtomicGet(&Ticks));
         if (WindowShouldClose()) { //Quit Game if the window is closed.
             GameGoing = false;
             TitleScreenGoing = false;