X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=include%2Fvlc_threads.h;h=724b9920b9f79c9a94ec694b394a1a52439066a4;hb=7475bd78c1e8bdc0e0b831697b1075943c7999dc;hp=4c908e218db678214fc146304f2100b36259ccab;hpb=8b13c2c5e05d4b5beaa10e3c1db359216a0b4e78;p=vlc diff --git a/include/vlc_threads.h b/include/vlc_threads.h index 4c908e218d..724b9920b9 100644 --- a/include/vlc_threads.h +++ b/include/vlc_threads.h @@ -3,7 +3,7 @@ * This header provides portable declarations for mutexes & conditions ***************************************************************************** * Copyright (C) 1999, 2002 VideoLAN - * $Id: vlc_threads.h,v 1.19 2002/12/30 17:36:01 gbazin Exp $ + * $Id$ * * Authors: Jean-Marc Dressler * Samuel Hocevar @@ -14,7 +14,7 @@ * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. - * + * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the @@ -27,10 +27,8 @@ #include -#if defined(GPROF) || defined(DEBUG) -# ifdef HAVE_SYS_TIME_H -# include -# endif +#if defined(DEBUG) && defined(HAVE_SYS_TIME_H) +# include #endif #if defined( PTH_INIT_IN_PTH_H ) /* GNU Pth */ @@ -44,6 +42,11 @@ #elif defined( WIN32 ) # include /* Win32 API */ +#elif defined( HAVE_KERNEL_SCHEDULER_H ) /* BeOS */ +# include +# include +# include + #elif defined( PTHREAD_COND_T_IN_PTHREAD_H ) /* pthreads (like Linux & BSD) */ # include # ifdef DEBUG @@ -56,11 +59,6 @@ #elif defined( HAVE_CTHREADS_H ) /* GNUMach */ # include -#elif defined( HAVE_KERNEL_SCHEDULER_H ) /* BeOS */ -# include -# include -# include - #else # error no threads available on your system ! @@ -72,20 +70,35 @@ /* Thread priorities */ #ifdef SYS_DARWIN -# define VLC_THREAD_PRIORITY_LOW 31 +# define VLC_THREAD_PRIORITY_LOW (-47) # define VLC_THREAD_PRIORITY_INPUT 37 -# define VLC_THREAD_PRIORITY_AUDIO 38 -# define VLC_THREAD_PRIORITY_VIDEO 31 -# define VLC_THREAD_PRIORITY_OUTPUT 31 +# define VLC_THREAD_PRIORITY_AUDIO 37 +# define VLC_THREAD_PRIORITY_VIDEO (-47) +# define VLC_THREAD_PRIORITY_OUTPUT 37 + +#elif defined(SYS_BEOS) +# define VLC_THREAD_PRIORITY_LOW 5 +# define VLC_THREAD_PRIORITY_INPUT 10 +# define VLC_THREAD_PRIORITY_AUDIO 10 +# define VLC_THREAD_PRIORITY_VIDEO 5 +# define VLC_THREAD_PRIORITY_OUTPUT 15 + +#elif defined(PTHREAD_COND_T_IN_PTHREAD_H) +# define VLC_THREAD_PRIORITY_LOW 0 +# define VLC_THREAD_PRIORITY_INPUT 20 +# define VLC_THREAD_PRIORITY_AUDIO 10 +# define VLC_THREAD_PRIORITY_VIDEO 0 +# define VLC_THREAD_PRIORITY_OUTPUT 30 #elif defined(WIN32) || defined(UNDER_CE) /* Define different priorities for WinNT/2K/XP and Win9x/Me */ # define VLC_THREAD_PRIORITY_LOW 0 # define VLC_THREAD_PRIORITY_INPUT \ - (IS_WINNT ? THREAD_PRIORITY_TIME_CRITICAL : 0) + (IS_WINNT ? THREAD_PRIORITY_ABOVE_NORMAL : 0) # define VLC_THREAD_PRIORITY_AUDIO \ (IS_WINNT ? THREAD_PRIORITY_HIGHEST : 0) -# define VLC_THREAD_PRIORITY_VIDEO 0 +# define VLC_THREAD_PRIORITY_VIDEO \ + (IS_WINNT ? 0 : THREAD_PRIORITY_BELOW_NORMAL ) # define VLC_THREAD_PRIORITY_OUTPUT \ (IS_WINNT ? THREAD_PRIORITY_ABOVE_NORMAL : 0) # define VLC_THREAD_PRIORITY_HIGHEST \ @@ -133,7 +146,7 @@ typedef struct #elif defined( WIN32 ) || defined( UNDER_CE ) typedef HANDLE vlc_thread_t; typedef BOOL (WINAPI *SIGNALOBJECTANDWAIT) ( HANDLE, HANDLE, DWORD, BOOL ); -typedef unsigned (__stdcall *PTHREAD_START) (void *); +typedef unsigned (WINAPI *PTHREAD_START) (void *); typedef struct { @@ -159,6 +172,29 @@ typedef struct vlc_object_t * p_this; } vlc_cond_t; +#elif defined( HAVE_KERNEL_SCHEDULER_H ) +/* This is the BeOS implementation of the vlc threads, note that the mutex is + * not a real mutex and the cond_var is not like a pthread cond_var but it is + * enough for what wee need */ + +typedef thread_id vlc_thread_t; + +typedef struct +{ + int32_t init; + sem_id lock; + + vlc_object_t * p_this; +} vlc_mutex_t; + +typedef struct +{ + int32_t init; + thread_id thread; + + vlc_object_t * p_this; +} vlc_cond_t; + #elif defined( PTHREAD_COND_T_IN_PTHREAD_H ) typedef pthread_t vlc_thread_t; typedef struct @@ -198,28 +234,5 @@ typedef struct vlc_object_t * p_this; } vlc_cond_t; -#elif defined( HAVE_KERNEL_SCHEDULER_H ) -/* This is the BeOS implementation of the vlc threads, note that the mutex is - * not a real mutex and the cond_var is not like a pthread cond_var but it is - * enough for what wee need */ - -typedef thread_id vlc_thread_t; - -typedef struct -{ - int32 init; - sem_id lock; - - vlc_object_t * p_this; -} vlc_mutex_t; - -typedef struct -{ - int32 init; - thread_id thread; - - vlc_object_t * p_this; -} vlc_cond_t; - #endif