X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;ds=sidebyside;f=include%2Fvlc_threads.h;h=3770e2fa0f401e7b6f0760e52fa1451c98028f9a;hb=12ade3e3bc975d5426ba4af155b7372c31093b31;hp=c303420d25435a2dbf188e1138653a72f4f9705d;hpb=8e2f8915937936ca788bc36bcbf1b2a5859b8c3f;p=vlc diff --git a/include/vlc_threads.h b/include/vlc_threads.h index c303420d25..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; @@ -134,7 +146,12 @@ typedef struct } vlc_mutex_t; #define VLC_STATIC_MUTEX { false, { { false, 0 } } } -typedef HANDLE vlc_cond_t; +typedef struct +{ + HANDLE handle; + unsigned clock; +} vlc_cond_t; + typedef HANDLE vlc_sem_t; typedef struct @@ -165,6 +182,7 @@ VLC_EXPORT( void, vlc_mutex_lock, ( vlc_mutex_t * ) ); VLC_EXPORT( int, vlc_mutex_trylock, ( vlc_mutex_t * ) LIBVLC_USED ); VLC_EXPORT( void, vlc_mutex_unlock, ( vlc_mutex_t * ) ); VLC_EXPORT( void, vlc_cond_init, ( vlc_cond_t * ) ); +VLC_EXPORT( void, vlc_cond_init_daytime, ( vlc_cond_t * ) ); VLC_EXPORT( void, vlc_cond_destroy, ( vlc_cond_t * ) ); VLC_EXPORT( void, vlc_cond_signal, (vlc_cond_t *) ); VLC_EXPORT( void, vlc_cond_broadcast, (vlc_cond_t *) ); @@ -200,7 +218,6 @@ VLC_EXPORT( unsigned, vlc_timer_getoverrun, (vlc_timer_t) LIBVLC_USED ); #ifndef LIBVLC_USE_PTHREAD_CANCEL enum { - VLC_DO_CANCEL, VLC_CLEANUP_PUSH, VLC_CLEANUP_POP, }; @@ -425,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 */