git.stg.codes
/
stg.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fixed compilation on *BSD systems.
[stg.git]
/
projects
/
stargazer
/
stg_timer.cpp
diff --git
a/projects/stargazer/stg_timer.cpp
b/projects/stargazer/stg_timer.cpp
index 7903c38d70dfd825b30672ed4ce447c92d629a1a..81128c7a776a867dcf5f8f0f7d2c7c8d1b0c0d8c 100644
(file)
--- a/
projects/stargazer/stg_timer.cpp
+++ b/
projects/stargazer/stg_timer.cpp
@@
-1,9
+1,14
@@
-#include <unistd.h>
#include <pthread.h>
#include <pthread.h>
+#include <ctime>
#include <cstring>
#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;
static int nonstop;
static pthread_t thrStgTimer;
@@
-54,18
+59,26
@@
switch (START_TIME)
stgTime = mktime(<);
break;
}
stgTime = mktime(<);
break;
}
+#else
+stgTime = time(NULL);
#endif
#endif
+sigset_t signalSet;
+sigfillset(&signalSet);
+pthread_sigmask(SIG_BLOCK, &signalSet, NULL);
+
nonstop = 1;
isTimerRunning = true;
while (nonstop)
{
#ifdef STG_TIMER_DEBUG
nonstop = 1;
isTimerRunning = true;
while (nonstop)
{
#ifdef STG_TIMER_DEBUG
- usleep(1000000 / TIME_SPEED);
+ struct timespec ts = {0, 1000000000 / TIME_SPEED};
+ nanosleep(&ts, NULL);
stgTime++;
#else
stgTime++;
#else
+ struct timespec ts = {0, 500000000};
+ nanosleep(&ts, NULL);
stgTime = time(NULL);
stgTime = time(NULL);
- usleep(500000);
#endif
}
isTimerRunning = false;
#endif
}
isTimerRunning = false;
@@
-79,7
+92,7
@@
static int a = 0;
isTimerRunning = false;
if (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;
{
isTimerRunning = false;
return -1;
@@
-104,9
+117,11
@@
return isTimerRunning;
int stgUsleep(unsigned long t)
{
#ifdef STG_TIMER_DEBUG
int stgUsleep(unsigned long t)
{
#ifdef STG_TIMER_DEBUG
-return usleep(t / TIME_SPEED);
+struct timespec ts = {static_cast<time_t>((t / TIME_SPEED) / 1000000), static_cast<long>(((t / TIME_SPEED) % 1000000) * 1000)};
+return nanosleep(&ts, NULL);
#else
#else
-return usleep(t);
+struct timespec ts = {static_cast<time_t>(t / 1000000), static_cast<long>((t % 1000000) * 1000)};
+return nanosleep(&ts, NULL);
#endif
}
//-----------------------------------------------------------------------------
#endif
}
//-----------------------------------------------------------------------------
@@
-116,5
+131,3
@@
void WaitTimer()
stgUsleep(200000);
}
//-----------------------------------------------------------------------------
stgUsleep(200000);
}
//-----------------------------------------------------------------------------
-
-