]> Kevux Git Server - fll/commitdiff
Update: Rewrite timing logic in controller.
authorKevin Day <Kevin@kevux.org>
Sun, 7 Jul 2024 04:35:59 +0000 (23:35 -0500)
committerKevin Day <Kevin@kevux.org>
Sun, 7 Jul 2024 04:35:59 +0000 (23:35 -0500)
Check if both numbers added together are greater than or equal to half a second.
If they are, then an overflow will happen.
Subtract the half seconds instead of handling an overflow.

This does not handle the case where the milliseconds or nanoseconds are greater than one second.
This only handles the cases where they are greater than half a second.

level_3/controller/c/controller/private-controller.c

index d9d8857f02009e7ddd7fed3ce752f90b8a555fae..9ce6e92c17e2852491498434aa728b074cc1a0bb 100644 (file)
@@ -708,13 +708,13 @@ extern "C" {
     gettimeofday(&now, 0);
 
     time->tv_sec = now.tv_sec + seconds;
-    time->tv_nsec = (now.tv_usec * 1000) + nanoseconds;
+    time->tv_nsec = now.tv_usec * 1000;
 
-    // If tv_nsec is 1 second or greater, then increment seconds.
-    if (time->tv_nsec >= 1000000000) {
+    // If result would be greater than 1 second, then increment seconds without overflowing.
+    if (time->tv_nsec > 500000000 && nanoseconds > 500000000) {
       ++(time->tv_sec);
 
-      time->tv_nsec -= 1000000000;
+      time->tv_nsec = (time->tv_nsec - 500000000) + (nanoseconds - 500000000);
     }
   }
 #endif // _di_controller_time_