@ -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 * P tr;
} 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 - > p tr = win32_cond ;
cond - > P tr = 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 - > p tr;
win32_cond_t * win32_cond = cond - > P tr;
/* 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 - > p tr = NULL ;
cond - > P tr = NULL ;
}
static av_unused void pthread_cond_broadcast ( pthread_cond_t * cond )
{
win32_cond_t * win32_cond = cond - > p tr;
win32_cond_t * win32_cond = cond - > P tr;
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 - > p tr;
win32_cond_t * win32_cond = cond - > P tr;
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 - > p tr;
win32_cond_t * win32_cond = cond - > P tr;
int have_waiter ;
if ( cond_signal ) {
cond_signal ( cond ) ;