]> git.stg.codes - stg.git/blobdiff - projects/stargazer/stg_timer.cpp
Block all signals in threads other than main
[stg.git] / projects / stargazer / stg_timer.cpp
index fff79a3918de7ae93e1bb2258e7ebbd942919413..235c669e0df09dcea32c31d94e9b5347932b88ff 100644 (file)
@@ -2,6 +2,7 @@
 
 #include <ctime>
 #include <cstring>
+#include <csignal>
 
 #include "stg/common.h"
 
@@ -58,6 +59,10 @@ switch (START_TIME)
 stgTime = time(NULL);
 #endif
 
+sigset_t signalSet;
+sigfillset(&signalSet);
+pthread_sigmask(SIG_BLOCK, &signalSet, NULL);
+
 nonstop = 1;
 isTimerRunning = true;
 while (nonstop)
@@ -65,12 +70,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
     }
@@ -112,11 +115,9 @@ int stgUsleep(unsigned long t)
 #ifdef STG_TIMER_DEBUG
 struct timespec ts = {(t / TIME_SPEED) / 1000000, ((t / TIME_SPEED) % 1000000) * 1000};
 return nanosleep(&ts, NULL);
-//return usleep(t / TIME_SPEED);
 #else
 struct timespec ts = {t / 1000000, (t % 1000000) * 1000};
 return nanosleep(&ts, NULL);
-//return usleep(t);
 #endif
 }
 //-----------------------------------------------------------------------------