X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;ds=inline;f=include%2Fvlc_threads.h;h=71a8dbec5f025dc0678126a7d968cf29839763d0;hb=f222f159c3fb5f256fb878aa900236945c41391c;hp=c9908321cf8b49b481186ffc9132df4da42763ea;hpb=72218fb9b9ba6c9f5a36bd3d3cfb1557a5491452;p=vlc diff --git a/include/vlc_threads.h b/include/vlc_threads.h index c9908321cf..71a8dbec5f 100644 --- a/include/vlc_threads.h +++ b/include/vlc_threads.h @@ -122,10 +122,10 @@ typedef struct typedef struct { - CRITICAL_SECTION mutex; LONG initialized; + CRITICAL_SECTION mutex; } vlc_mutex_t; -#define VLC_STATIC_MUTEX { .initialized = 0, } +#define VLC_STATIC_MUTEX { 0, } typedef HANDLE vlc_cond_t; typedef DWORD vlc_threadvar_t; @@ -143,6 +143,7 @@ VLC_EXPORT( int, vlc_mutex_init, ( vlc_mutex_t * ) ); VLC_EXPORT( int, vlc_mutex_init_recursive, ( vlc_mutex_t * ) ); VLC_EXPORT( void, vlc_mutex_destroy, ( vlc_mutex_t * ) ); VLC_EXPORT( void, vlc_mutex_lock, ( vlc_mutex_t * ) ); +VLC_EXPORT( int, vlc_mutex_trylock, ( vlc_mutex_t * ) ); VLC_EXPORT( void, vlc_mutex_unlock, ( vlc_mutex_t * ) ); VLC_EXPORT( int, vlc_cond_init, ( vlc_cond_t * ) ); VLC_EXPORT( void, vlc_cond_destroy, ( vlc_cond_t * ) ); @@ -152,6 +153,8 @@ VLC_EXPORT( void, vlc_cond_wait, (vlc_cond_t *, vlc_mutex_t *) ); VLC_EXPORT( int, vlc_cond_timedwait, (vlc_cond_t *, vlc_mutex_t *, mtime_t) ); VLC_EXPORT( int, vlc_threadvar_create, (vlc_threadvar_t * , void (*) (void *) ) ); VLC_EXPORT( void, vlc_threadvar_delete, (vlc_threadvar_t *) ); +VLC_EXPORT( int, vlc_threadvar_set, (vlc_threadvar_t, void *) ); +VLC_EXPORT( void *, vlc_threadvar_get, (vlc_threadvar_t) ); VLC_EXPORT( int, vlc_thread_create, ( vlc_object_t *, const char *, int, const char *, void * ( * ) ( vlc_object_t * ), int ) ); VLC_EXPORT( int, __vlc_thread_set_priority, ( vlc_object_t *, const char *, int, int ) ); VLC_EXPORT( void, __vlc_thread_join, ( vlc_object_t * ) ); @@ -233,42 +236,6 @@ static inline void vlc_cleanup_lock (void *lock) } #define mutex_cleanup_push( lock ) vlc_cleanup_push (vlc_cleanup_lock, lock) -/***************************************************************************** - * vlc_threadvar_set: create: set the value of a thread-local variable - *****************************************************************************/ -static inline int vlc_threadvar_set( vlc_threadvar_t * p_tls, void *p_value ) -{ - int i_ret; - -#if defined(LIBVLC_USE_PTHREAD) - i_ret = pthread_setspecific( *p_tls, p_value ); - -#elif defined( UNDER_CE ) || defined( WIN32 ) - i_ret = TlsSetValue( *p_tls, p_value ) ? EINVAL : 0; - -#endif - - return i_ret; -} - -/***************************************************************************** - * vlc_threadvar_get: create: get the value of a thread-local variable - *****************************************************************************/ -static inline void* vlc_threadvar_get( vlc_threadvar_t * p_tls ) -{ - void *p_ret; - -#if defined(LIBVLC_USE_PTHREAD) - p_ret = pthread_getspecific( *p_tls ); - -#elif defined( UNDER_CE ) || defined( WIN32 ) - p_ret = TlsGetValue( *p_tls ); - -#endif - - return p_ret; -} - # if defined (_POSIX_SPIN_LOCKS) && ((_POSIX_SPIN_LOCKS - 0) > 0) typedef pthread_spinlock_t vlc_spinlock_t;