Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/blenlib/intern/threads.c')
-rw-r--r--source/blender/blenlib/intern/threads.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/source/blender/blenlib/intern/threads.c b/source/blender/blenlib/intern/threads.c
index 9df746276bd..ad89a61a2a7 100644
--- a/source/blender/blenlib/intern/threads.c
+++ b/source/blender/blenlib/intern/threads.c
@@ -524,6 +524,7 @@ void *BLI_thread_queue_pop(ThreadQueue *queue)
static void wait_timeout(struct timespec *timeout, int ms)
{
+#ifndef WIN32
struct timeval now;
ldiv_t div_result;
long x;
@@ -539,6 +540,23 @@ static void wait_timeout(struct timespec *timeout, int ms)
}
timeout->tv_nsec = x*1000;
+#else
+ time_t now;
+ ldiv_t div_result;
+ long x;
+
+ time(&now);
+ div_result = ldiv(ms, 1000);
+ timeout->tv_sec = now + div_result.quot;
+ x = (now*1000) + (div_result.rem*1000);
+
+ if (x >= 1000000) {
+ timeout->tv_sec++;
+ x -= 1000000;
+ }
+
+ timeout->tv_nsec = x*1000;
+#endif
}
void *BLI_thread_queue_pop_timeout(ThreadQueue *queue, int ms)