From 274c3d3a36679950dcf518b94cc5e4b522cc7d7f Mon Sep 17 00:00:00 2001 From: Ron Koenderink Date: Sat, 20 Oct 2007 11:51:50 +0000 Subject: [PATCH] (empth_sleep) [_WIN32]: Ensure the thread does not waking up early. It has been seen which caused an update to be missed. --- src/lib/empthread/ntthread.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/lib/empthread/ntthread.c b/src/lib/empthread/ntthread.c index 4f736949..5c6dbe71 100644 --- a/src/lib/empthread/ntthread.c +++ b/src/lib/empthread/ntthread.c @@ -63,6 +63,7 @@ #include "misc.h" #include "empthread.h" #include "prototypes.h" +#include "server.h" #define loc_MIN_THREAD_STACK 16384 @@ -325,8 +326,6 @@ loc_Exit_Handler(DWORD fdwCtrlType) static void empth_threadMain(void *pvData) { - time_t now; - empth_t *pThread = pvData; /* Out of here... */ @@ -342,9 +341,14 @@ empth_threadMain(void *pvData) /* Signal that the thread has started. */ SetEvent(hThreadStartEvent); - /* seed the rand() function */ - time(&now); - srand(now ^ (unsigned)pThread); + /* + * seed the rand() function + * In WIN32, each thread has seed + */ + if (rnd_seed.set) + srand(rnd_seed.seed); + else + srand(time(NULL) ^ (unsigned)pThread); /* Switch to this thread context */ loc_RunThisThread(NULL);