raster pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=e8c396a6e2aae0f9da189930d0c55cd3d2500d58

commit e8c396a6e2aae0f9da189930d0c55cd3d2500d58
Author: Carsten Haitzler (Rasterman) <ras...@rasterman.com>
Date:   Thu Jul 14 14:23:49 2016 +0900

    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
---
 src/generic/evas/common/timeout.c | 27 +++++++++++++++++++++++++--
 1 file changed, 25 insertions(+), 2 deletions(-)

diff --git a/src/generic/evas/common/timeout.c 
b/src/generic/evas/common/timeout.c
index 6d52aa9..7737bad 100644
--- a/src/generic/evas/common/timeout.c
+++ b/src/generic/evas/common/timeout.c
@@ -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

-- 


Reply via email to