X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=include%2Fvlc_threads.h;h=3770e2fa0f401e7b6f0760e52fa1451c98028f9a;hb=12ade3e3bc975d5426ba4af155b7372c31093b31;hp=3caa97d5fe6dd0526172eca9cda16c33eac532f5;hpb=e7b765a18256d7c2e1cbaa9573ab28e26c99a0f5;p=vlc diff --git a/include/vlc_threads.h b/include/vlc_threads.h index 3caa97d5fe..3770e2fa0f 100644 --- a/include/vlc_threads.h +++ b/include/vlc_threads.h @@ -45,7 +45,14 @@ # include /* _POSIX_SPIN_LOCKS */ # include -# include + +/* Unnamed POSIX semaphores not supported on Mac OS X, use Mach semaphores instead */ +# if defined (__APPLE__) +# include +# include +# else +# include +# endif #endif @@ -103,11 +110,16 @@ typedef pthread_mutex_t vlc_mutex_t; #define VLC_STATIC_MUTEX PTHREAD_MUTEX_INITIALIZER typedef pthread_cond_t vlc_cond_t; #define VLC_STATIC_COND PTHREAD_COND_INITIALIZER -typedef sem_t vlc_sem_t; typedef pthread_rwlock_t vlc_rwlock_t; typedef pthread_key_t vlc_threadvar_t; typedef struct vlc_timer *vlc_timer_t; +#if defined (__APPLE__) +typedef semaphore_t vlc_sem_t; +#else +typedef sem_t vlc_sem_t; +#endif + #elif defined( WIN32 ) #if !defined( UNDER_CE ) typedef HANDLE vlc_thread_t; @@ -430,4 +442,16 @@ class vlc_mutex_locker }; #endif +enum { + VLC_AVCODEC_MUTEX = 0, + VLC_GCRYPT_MUTEX, + VLC_XLIB_MUTEX, + /* Insert new entry HERE */ + VLC_MAX_MUTEX +}; + +VLC_EXPORT( void, vlc_global_mutex, ( unsigned, bool ) ); +#define vlc_global_lock( n ) vlc_global_mutex( n, true ) +#define vlc_global_unlock( n ) vlc_global_mutex( n, false ) + #endif /* !_VLC_THREADS_H */