mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-02-09 14:14:39 +02:00
w32pthreads: use the CONDITION_VARIABLE typedef if available
This silences warnings about passing arguments from incompatible pointer type when targeting Windows Vista or newer. Signed-off-by: James Almer <jamrial@gmail.com> Signed-off-by: Martin Storsjö <martin@martin.st>
This commit is contained in:
parent
2bc220958c
commit
73ea3ffcd5
@ -54,12 +54,15 @@ typedef struct pthread_t {
|
|||||||
* not mutexes */
|
* not mutexes */
|
||||||
typedef CRITICAL_SECTION pthread_mutex_t;
|
typedef CRITICAL_SECTION pthread_mutex_t;
|
||||||
|
|
||||||
/* This is the CONDITIONAL_VARIABLE typedef for using Window's native
|
/* This is the CONDITION_VARIABLE typedef for using Windows' native
|
||||||
* conditional variables on kernels 6.0+.
|
* conditional variables on kernels 6.0+. */
|
||||||
* MinGW does not currently have this typedef. */
|
#if HAVE_CONDITION_VARIABLE_PTR
|
||||||
|
typedef CONDITION_VARIABLE pthread_cond_t;
|
||||||
|
#else
|
||||||
typedef struct pthread_cond_t {
|
typedef struct pthread_cond_t {
|
||||||
void *ptr;
|
void *Ptr;
|
||||||
} pthread_cond_t;
|
} pthread_cond_t;
|
||||||
|
#endif
|
||||||
|
|
||||||
/* function pointers to conditional variable API on windows 6.0+ kernels */
|
/* function pointers to conditional variable API on windows 6.0+ kernels */
|
||||||
#if _WIN32_WINNT < 0x0600
|
#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));
|
win32_cond = av_mallocz(sizeof(win32_cond_t));
|
||||||
if (!win32_cond)
|
if (!win32_cond)
|
||||||
return;
|
return;
|
||||||
cond->ptr = win32_cond;
|
cond->Ptr = win32_cond;
|
||||||
win32_cond->semaphore = CreateSemaphore(NULL, 0, 0x7fffffff, NULL);
|
win32_cond->semaphore = CreateSemaphore(NULL, 0, 0x7fffffff, NULL);
|
||||||
if (!win32_cond->semaphore)
|
if (!win32_cond->semaphore)
|
||||||
return;
|
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)
|
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 */
|
/* native condition variables do not destroy */
|
||||||
if (cond_init)
|
if (cond_init)
|
||||||
return;
|
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_waiter_count);
|
||||||
pthread_mutex_destroy(&win32_cond->mtx_broadcast);
|
pthread_mutex_destroy(&win32_cond->mtx_broadcast);
|
||||||
av_freep(&win32_cond);
|
av_freep(&win32_cond);
|
||||||
cond->ptr = NULL;
|
cond->Ptr = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static av_unused void pthread_cond_broadcast(pthread_cond_t *cond)
|
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;
|
int have_waiter;
|
||||||
|
|
||||||
if (cond_broadcast) {
|
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)
|
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;
|
int last_waiter;
|
||||||
if (cond_wait) {
|
if (cond_wait) {
|
||||||
cond_wait(cond, mutex, INFINITE);
|
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)
|
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;
|
int have_waiter;
|
||||||
if (cond_signal) {
|
if (cond_signal) {
|
||||||
cond_signal(cond);
|
cond_signal(cond);
|
||||||
|
2
configure
vendored
2
configure
vendored
@ -1498,6 +1498,7 @@ TOOLCHAIN_FEATURES="
|
|||||||
"
|
"
|
||||||
|
|
||||||
TYPES_LIST="
|
TYPES_LIST="
|
||||||
|
CONDITION_VARIABLE_Ptr
|
||||||
socklen_t
|
socklen_t
|
||||||
struct_addrinfo
|
struct_addrinfo
|
||||||
struct_group_source_req
|
struct_group_source_req
|
||||||
@ -4088,6 +4089,7 @@ check_func_headers windows.h MapViewOfFile
|
|||||||
check_func_headers windows.h SetConsoleTextAttribute
|
check_func_headers windows.h SetConsoleTextAttribute
|
||||||
check_func_headers windows.h Sleep
|
check_func_headers windows.h Sleep
|
||||||
check_func_headers windows.h VirtualAlloc
|
check_func_headers windows.h VirtualAlloc
|
||||||
|
check_struct windows.h "CONDITION_VARIABLE" Ptr
|
||||||
|
|
||||||
check_header direct.h
|
check_header direct.h
|
||||||
check_header dlfcn.h
|
check_header dlfcn.h
|
||||||
|
Loading…
x
Reference in New Issue
Block a user