]> git.stg.codes - stg.git/blobdiff - projects/stargazer/stg_timer.cpp
Massive refactoring.
[stg.git] / projects / stargazer / stg_timer.cpp
index dd0a04e1a9d249ceae200214b528d1b0a1f60e1f..81128c7a776a867dcf5f8f0f7d2c7c8d1b0c0d8c 100644 (file)
@@ -2,8 +2,13 @@
 
 #include <ctime>
 #include <cstring>
+#include <csignal>
 
-#include "common.h"
+#include "stg/common.h"
+
+#include "stg_timer.h"
+
+void * StgTimer(void *);
 
 static int nonstop;
 static pthread_t thrStgTimer;
@@ -54,8 +59,14 @@ switch (START_TIME)
         stgTime = mktime(&lt);
         break;
     }
+#else
+stgTime = time(NULL);
 #endif
 
+sigset_t signalSet;
+sigfillset(&signalSet);
+pthread_sigmask(SIG_BLOCK, &signalSet, NULL);
+
 nonstop = 1;
 isTimerRunning = true;
 while (nonstop)
@@ -63,12 +74,10 @@ while (nonstop)
     #ifdef STG_TIMER_DEBUG
     struct timespec ts = {0, 1000000000 / TIME_SPEED};
     nanosleep(&ts, NULL);
-    //usleep(1000000 / TIME_SPEED);
     stgTime++;
     #else
     struct timespec ts = {0, 500000000};
     nanosleep(&ts, NULL);
-    //usleep(500000);
     stgTime = time(NULL);
     #endif
     }
@@ -83,7 +92,7 @@ static int a = 0;
 isTimerRunning = false;
 
 if (a == 0)
-    if (pthread_create(&thrStgTimer, NULL, StgTimer, NULL))
+    if (pthread_create(&thrStgTimer, NULL, &StgTimer, NULL))
         {
         isTimerRunning = false;
         return -1;
@@ -108,13 +117,11 @@ return isTimerRunning;
 int stgUsleep(unsigned long t)
 {
 #ifdef STG_TIMER_DEBUG
-struct timespec ts = {(t / TIME_SPEED) / 1000000, ((t / TIME_SPEED) % 1000000) * 1000};
+struct timespec ts = {static_cast<time_t>((t / TIME_SPEED) / 1000000), static_cast<long>(((t / TIME_SPEED) % 1000000) * 1000)};
 return nanosleep(&ts, NULL);
-//return usleep(t / TIME_SPEED);
 #else
-struct timespec ts = {t / 1000000, (t % 1000000) * 1000};
+struct timespec ts = {static_cast<time_t>(t / 1000000), static_cast<long>((t % 1000000) * 1000)};
 return nanosleep(&ts, NULL);
-//return usleep(t);
 #endif
 }
 //-----------------------------------------------------------------------------