evas generic loaders fix timeout on windows where no alarm exists

this uses a thread - to do the same. based on code vtorri put in T3790

this should fix T3790
This commit is contained in:
Carsten Haitzler 2016-07-14 14:23:49 +09:00
parent b1f2c335e6
commit e8c396a6e2
1 changed files with 25 additions and 2 deletions

View File

@ -1,5 +1,27 @@
#include <unistd.h>
#include <signal.h>
#ifdef _WIN32
# include <stdio.h>
# include <windows.h>
# include <process.h>
unsigned int
_timeout(void *arg)
{
int s (int)arg;
Sleep(s * 1000);
_Exit(-1);
_endthreadex(0);
return 0;
}
void
timeout_init(int seconds)
{
unsigned int id;
_beginthreadex( NULL, 0, _timeout, (void *)seconds, 0, &id);
}
#else
# include <unistd.h>
# include <signal.h>
static void
_timeout(int val)
@ -14,3 +36,4 @@ timeout_init(int seconds)
signal(SIGALRM, _timeout);
alarm(seconds);
}
#endif