|
@@ -54,12 +54,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
|
|
@@ -158,7 +161,7 @@ static av_unused void pthread_cond_init(pthread_cond_t *cond, const void *unused
|
|
|
win32_cond = av_mallocz(sizeof(win32_cond_t));
|
|
|
if (!win32_cond)
|
|
|
return;
|
|
|
- cond->ptr = win32_cond;
|
|
|
+ cond->Ptr = win32_cond;
|
|
|
win32_cond->semaphore = CreateSemaphore(NULL, 0, 0x7fffffff, NULL);
|
|
|
if (!win32_cond->semaphore)
|
|
|
return;
|
|
@@ -172,7 +175,7 @@ static av_unused void 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;
|
|
@@ -183,12 +186,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) {
|
|
@@ -219,7 +222,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);
|
|
@@ -251,7 +254,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);
|