X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/687631532197750696d35aa12c40406b04fb878d..9c29aeaca5bdd90922c3192fd5e28530af28aba7:/projects/stargazer/stg_timer.cpp?ds=sidebyside diff --git a/projects/stargazer/stg_timer.cpp b/projects/stargazer/stg_timer.cpp index fff79a39..81128c7a 100644 --- a/projects/stargazer/stg_timer.cpp +++ b/projects/stargazer/stg_timer.cpp @@ -2,9 +2,14 @@ #include #include +#include #include "stg/common.h" +#include "stg_timer.h" + +void * StgTimer(void *); + static int nonstop; static pthread_t thrStgTimer; static bool isTimerRunning = false; @@ -58,6 +63,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 +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 } @@ -85,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; @@ -110,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((t / TIME_SPEED) / 1000000), static_cast(((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(t / 1000000), static_cast((t % 1000000) * 1000)}; return nanosleep(&ts, NULL); -//return usleep(t); #endif } //-----------------------------------------------------------------------------