X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=include%2Fvlc_threads.h;h=01e8b716aa389c84d993fc2f467fc78b48ea87b7;hb=d727c4590f83751a2f28fcdfd8af3886ebeb45d8;hp=9cd09408b581ec0f14a7d34fb2dbdf4d3833a00f;hpb=aa47b1621816c96eff4d6c7edb7b4859192013a4;p=vlc diff --git a/include/vlc_threads.h b/include/vlc_threads.h index 9cd09408b5..01e8b716aa 100644 --- a/include/vlc_threads.h +++ b/include/vlc_threads.h @@ -25,10 +25,6 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************/ -#if !defined( __LIBVLC__ ) - #error You are not libvlc or one of its plugins. You cannot include this file -#endif - #ifndef _VLC_THREADS_H_ #define _VLC_THREADS_H_ @@ -62,12 +58,12 @@ /* Thread priorities */ #ifdef __APPLE__ -# define VLC_THREAD_PRIORITY_LOW (-47) -# define VLC_THREAD_PRIORITY_INPUT 37 -# define VLC_THREAD_PRIORITY_AUDIO 37 -# define VLC_THREAD_PRIORITY_VIDEO (-47) -# define VLC_THREAD_PRIORITY_OUTPUT 37 -# define VLC_THREAD_PRIORITY_HIGHEST 37 +# define VLC_THREAD_PRIORITY_LOW 0 +# define VLC_THREAD_PRIORITY_INPUT 22 +# define VLC_THREAD_PRIORITY_AUDIO 22 +# define VLC_THREAD_PRIORITY_VIDEO 0 +# define VLC_THREAD_PRIORITY_OUTPUT 22 +# define VLC_THREAD_PRIORITY_HIGHEST 22 #elif defined(SYS_BEOS) # define VLC_THREAD_PRIORITY_LOW 5 @@ -175,9 +171,10 @@ VLC_EXPORT( int, vlc_threadvar_create, (vlc_threadvar_t * , void (*) (void *) ) VLC_EXPORT( void, vlc_threadvar_delete, (vlc_threadvar_t *) ); VLC_EXPORT( int, __vlc_thread_create, ( vlc_object_t *, const char *, int, const char *, void * ( * ) ( void * ), int, bool ) ); VLC_EXPORT( int, __vlc_thread_set_priority, ( vlc_object_t *, const char *, int, int ) ); -VLC_EXPORT( void, __vlc_thread_ready, ( vlc_object_t * ) ); VLC_EXPORT( void, __vlc_thread_join, ( vlc_object_t *, const char *, int ) ); +#define vlc_thread_ready vlc_object_signal + /***************************************************************************** * vlc_mutex_lock: lock a mutex *****************************************************************************/ @@ -191,7 +188,7 @@ VLC_EXPORT(void, vlc_pthread_fatal, (const char *action, int error, const char * if (val) \ vlc_pthread_fatal (action, val, psz_file, i_line) #else -# define VLC_THREAD_ASSERT (void)0 +# define VLC_THREAD_ASSERT ((void)(val)) #endif static inline void __vlc_mutex_lock( const char * psz_file, int i_line, @@ -563,6 +560,31 @@ static inline int vlc_spin_init (vlc_spinlock_t *spin) # define vlc_spin_destroy vlc_mutex_destroy #endif +/** + * Issues a full memory barrier. + */ +#if defined (__APPLE__) +# include /* OSMemoryBarrier() */ +#endif +static inline void barrier (void) +{ +#if defined (__GNUC__) && (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) + __sync_synchronize (); +#elif defined(__APPLE__) + OSMemoryBarrier (); +#elif defined(__powerpc__) + asm volatile ("sync":::"memory"); +#elif defined(__i386__) + asm volatile ("mfence":::"memory"); +#elif defined (LIBVLC_USE_PTHREAD) + static pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER; + pthread_mutex_lock (&lock); + pthread_mutex_unlock (&lock); +#else +# error barrier not implemented! +#endif +} + /***************************************************************************** * vlc_thread_create: create a thread *****************************************************************************/ @@ -575,12 +597,6 @@ static inline int vlc_spin_init (vlc_spinlock_t *spin) #define vlc_thread_set_priority( P_THIS, PRIORITY ) \ __vlc_thread_set_priority( VLC_OBJECT(P_THIS), __FILE__, __LINE__, PRIORITY ) -/***************************************************************************** - * vlc_thread_ready: tell the parent thread we were successfully spawned - *****************************************************************************/ -#define vlc_thread_ready( P_THIS ) \ - __vlc_thread_ready( VLC_OBJECT(P_THIS) ) - /***************************************************************************** * vlc_thread_join: wait until a thread exits *****************************************************************************/