X-Git-Url: http://git.videolan.org/?p=ffmpeg.git;a=blobdiff_plain;f=compat%2Fw32pthreads.h;h=be275edce7c89a20ff880b839084edc7f6597604;hp=f5708018328a27edb34cf20b40dd6a5443b0c9c6;hb=9155c595f1a9c5a089a59e2c0aefdfabd0a6c59b;hpb=4622f11f9c83db8a2e08408c71ff901826ca652c diff --git a/compat/w32pthreads.h b/compat/w32pthreads.h index f570801832..be275edce7 100644 --- a/compat/w32pthreads.h +++ b/compat/w32pthreads.h @@ -61,11 +61,18 @@ typedef struct pthread_cond_t { } pthread_cond_t; /* function pointers to conditional variable API on windows 6.0+ kernels */ +#if _WIN32_WINNT < 0x0600 static void (WINAPI *cond_broadcast)(pthread_cond_t *cond); static void (WINAPI *cond_init)(pthread_cond_t *cond); static void (WINAPI *cond_signal)(pthread_cond_t *cond); static BOOL (WINAPI *cond_wait)(pthread_cond_t *cond, pthread_mutex_t *mutex, DWORD milliseconds); +#else +#define cond_init InitializeConditionVariable +#define cond_broadcast WakeAllConditionVariable +#define cond_signal WakeConditionVariable +#define cond_wait SleepConditionVariableCS +#endif static unsigned __stdcall attribute_align_arg win32thread_worker(void *arg) { @@ -129,7 +136,7 @@ typedef struct win32_cond_t { static void pthread_cond_init(pthread_cond_t *cond, const void *unused_attr) { win32_cond_t *win32_cond = NULL; - if (_WIN32_WINNT >= 0x0600 || cond_init) { + if (cond_init) { cond_init(cond); return; } @@ -154,7 +161,7 @@ static void pthread_cond_destroy(pthread_cond_t *cond) { win32_cond_t *win32_cond = cond->ptr; /* native condition variables do not destroy */ - if (_WIN32_WINNT >= 0x0600 || cond_init) + if (cond_init) return; /* non native condition variables */ @@ -171,7 +178,7 @@ static void pthread_cond_broadcast(pthread_cond_t *cond) win32_cond_t *win32_cond = cond->ptr; int have_waiter; - if (_WIN32_WINNT >= 0x0600 || cond_broadcast) { + if (cond_broadcast) { cond_broadcast(cond); return; } @@ -201,7 +208,7 @@ static int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex) { win32_cond_t *win32_cond = cond->ptr; int last_waiter; - if (_WIN32_WINNT >= 0x0600 || cond_wait) { + if (cond_wait) { cond_wait(cond, mutex, INFINITE); return 0; } @@ -233,7 +240,7 @@ static void pthread_cond_signal(pthread_cond_t *cond) { win32_cond_t *win32_cond = cond->ptr; int have_waiter; - if (_WIN32_WINNT >= 0x0600 || cond_signal) { + if (cond_signal) { cond_signal(cond); return; } @@ -267,11 +274,6 @@ static void w32thread_init(void) (void*)GetProcAddress(kernel_dll, "WakeConditionVariable"); cond_wait = (void*)GetProcAddress(kernel_dll, "SleepConditionVariableCS"); -#else - cond_init = InitializeConditionVariable; - cond_broadcast = WakeAllConditionVariable; - cond_signal = WakeConditionVariable; - cond_wait = SleepConditionVariableCS; #endif }