]> git.stg.codes - stg.git/blobdiff - stglibs/ia.lib/ia.cpp
Block all signals in threads other than main
[stg.git] / stglibs / ia.lib / ia.cpp
index 9883dbbb8d276dbc2cb30db284b1a2c257f6564f..81bd75fb7df8ec48b7bc198bb21642f2342af54f 100644 (file)
 #include <sys/time.h>
 void * RunL(void * data)
 {
+sigset_t signalSet;
+sigfillset(&signalSet);
+pthread_sigmask(SIG_BLOCK, &signalSet, NULL);
+
 
 IA_CLIENT_PROT * c = (IA_CLIENT_PROT *)data;
 static int a = 0;
 
 if (a == 0)
     {
-    usleep(50000);
+    Sleep(50);
     a = 1;
     }
 
@@ -82,7 +86,9 @@ return NULL;
 //---------------------------------------------------------------------------
 void Sleep(int ms)
 {
-usleep(ms * 1000);
+long long res = ms * 1000000;
+struct timespec ts = {res / 1000000000, res % 1000000000};
+nanosleep(&ts, NULL);
 }
 //---------------------------------------------------------------------------
 long GetTickCount()