aboutsummaryrefslogtreecommitdiffstats
path: root/compat/w32pthreads.h
diff options
context:
space:
mode:
authorJames Almer <jamrial@gmail.com>2014-10-09 13:20:00 -0300
committerJames Almer <jamrial@gmail.com>2014-10-09 13:26:44 -0300
commit0c0694931442ef9ea91eace120e0629e0ac01b76 (patch)
treea360751ff9cbb3184574d6365c16b264ca08d7f0 /compat/w32pthreads.h
parent99afec08f8a107ed6026aa99956d648884bb0792 (diff)
downloadffmpeg-0c0694931442ef9ea91eace120e0629e0ac01b76.tar.gz
compat/w32pthreads: use the CONDITION_VARIABLE typedef if available
This silences warnings about passing arguments from incompatible pointer type when targeting Windows Vista or newer. Tested-by: Matt Oliver <protogonoi@gmail.com> Reviewed-by: Michael Niedermayer <michaelni@gmx.at> Signed-off-by: James Almer <jamrial@gmail.com>
Diffstat (limited to 'compat/w32pthreads.h')
-rw-r--r--compat/w32pthreads.h23
1 files changed, 13 insertions, 10 deletions
diff --git a/compat/w32pthreads.h b/compat/w32pthreads.h
index 2a7f323d34..8b8071433a 100644
--- a/compat/w32pthreads.h
+++ b/compat/w32pthreads.h
@@ -55,12 +55,15 @@ typedef struct pthread_t {
* not mutexes */
typedef CRITICAL_SECTION pthread_mutex_t;
-/* This is the CONDITIONAL_VARIABLE typedef for using Window's native
- * conditional variables on kernels 6.0+.
- * MinGW does not currently have this typedef. */
+/* This is the CONDITION_VARIABLE typedef for using Windows' native
+ * conditional variables on kernels 6.0+. */
+#if HAVE_CONDITION_VARIABLE_PTR
+typedef CONDITION_VARIABLE pthread_cond_t;
+#else
typedef struct pthread_cond_t {
- void *ptr;
+ void *Ptr;
} pthread_cond_t;
+#endif
/* function pointers to conditional variable API on windows 6.0+ kernels */
#if _WIN32_WINNT < 0x0600
@@ -159,7 +162,7 @@ static av_unused int pthread_cond_init(pthread_cond_t *cond, const void *unused_
win32_cond = av_mallocz(sizeof(win32_cond_t));
if (!win32_cond)
return ENOMEM;
- cond->ptr = win32_cond;
+ cond->Ptr = win32_cond;
win32_cond->semaphore = CreateSemaphore(NULL, 0, 0x7fffffff, NULL);
if (!win32_cond->semaphore)
return ENOMEM;
@@ -174,7 +177,7 @@ static av_unused int pthread_cond_init(pthread_cond_t *cond, const void *unused_
static av_unused void pthread_cond_destroy(pthread_cond_t *cond)
{
- win32_cond_t *win32_cond = cond->ptr;
+ win32_cond_t *win32_cond = cond->Ptr;
/* native condition variables do not destroy */
if (cond_init)
return;
@@ -185,12 +188,12 @@ static av_unused void pthread_cond_destroy(pthread_cond_t *cond)
pthread_mutex_destroy(&win32_cond->mtx_waiter_count);
pthread_mutex_destroy(&win32_cond->mtx_broadcast);
av_freep(&win32_cond);
- cond->ptr = NULL;
+ cond->Ptr = NULL;
}
static av_unused void pthread_cond_broadcast(pthread_cond_t *cond)
{
- win32_cond_t *win32_cond = cond->ptr;
+ win32_cond_t *win32_cond = cond->Ptr;
int have_waiter;
if (cond_broadcast) {
@@ -221,7 +224,7 @@ static av_unused void pthread_cond_broadcast(pthread_cond_t *cond)
static av_unused int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex)
{
- win32_cond_t *win32_cond = cond->ptr;
+ win32_cond_t *win32_cond = cond->Ptr;
int last_waiter;
if (cond_wait) {
cond_wait(cond, mutex, INFINITE);
@@ -253,7 +256,7 @@ static av_unused int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mu
static av_unused void pthread_cond_signal(pthread_cond_t *cond)
{
- win32_cond_t *win32_cond = cond->ptr;
+ win32_cond_t *win32_cond = cond->Ptr;
int have_waiter;
if (cond_signal) {
cond_signal(cond);