diff options
author | Charadon <dev@iotib.net> | 2022-06-13 03:06:57 -0400 |
---|---|---|
committer | Charadon <dev@iotib.net> | 2022-06-13 03:06:57 -0400 |
commit | a1f0c28548dce172cdb56b69c07d8bfee1c00d15 (patch) | |
tree | 4c36f0cddced1ba8971dc8b445232a51ae55931f | |
parent | be121c63b03cf4b36793351ae0d733866512bd4c (diff) | |
download | Pong-C-a1f0c28548dce172cdb56b69c07d8bfee1c00d15.tar.gz |
Maybe made clock more accurate? Needs testing
-rw-r--r-- | src/main.c | 20 |
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); } |