X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Flibvlc.h;h=873b73cd9d63af7d906a3ad1b194f9e063f7647b;hb=f5b52a214d4053b3e4b6c26e9371f9c89f692d42;hp=4ab242a1e795ee85bd805c2615425085c1afb412;hpb=1e87443a23c8402521dbfc53bac436a8aff23dae;p=vlc diff --git a/src/libvlc.h b/src/libvlc.h index 4ab242a1e7..873b73cd9d 100644 --- a/src/libvlc.h +++ b/src/libvlc.h @@ -42,15 +42,9 @@ extern void vlc_DeinitActions (libvlc_int_t *); * OS-specific initialization */ void system_Init ( libvlc_int_t *, int *, const char *[] ); -void system_Configure ( libvlc_int_t *, int *, const char *[] ); +void system_Configure ( libvlc_int_t *, int, const char *const [] ); void system_End ( libvlc_int_t * ); -/* - * Legacy object stuff that is still used within libvlccore (only) - */ -void vlc_object_detach (vlc_object_t *); -#define vlc_object_detach( o ) vlc_object_detach(VLC_OBJECT(o)) - /* * Threads subsystem */ @@ -84,38 +78,35 @@ bool vlc_CPU_CheckPluginDir (const char *name); * Message/logging stuff */ -/** - * Store all data required by messages interfaces. - */ -typedef struct msg_bank_t -{ - /** Message queue lock */ - vlc_rwlock_t lock; - - /* Subscribers */ - int i_sub; - msg_subscription_t **pp_sub; - - /* Logfile for WinCE */ -#ifdef UNDER_CE - FILE *logfile; -#endif -} msg_bank_t; +typedef struct msg_bank_t msg_bank_t; -void msg_Create (libvlc_int_t *); -void msg_Destroy (libvlc_int_t *); +msg_bank_t *msg_Create (void); +void msg_Destroy (msg_bank_t *); /** Internal message stack context */ void msg_StackSet ( int, const char*, ... ); void msg_StackAdd ( const char*, ... ); const char* msg_StackMsg ( void ); -void msg_StackDestroy (void *); /* * Unicode stuff */ char *vlc_fix_readdir (const char *); +/* + * LibVLC exit event handling + */ +typedef struct vlc_exit +{ + vlc_mutex_t lock; + void (*handler) (void *); + void *opaque; + bool killed; +} vlc_exit_t; + +void vlc_ExitInit( vlc_exit_t * ); +void vlc_ExitDestroy( vlc_exit_t * ); + /* * LibVLC objects stuff */ @@ -135,10 +126,10 @@ char *vlc_fix_readdir (const char *); * @return the created object, or NULL. */ extern void * -__vlc_custom_create (vlc_object_t *p_this, size_t i_size, int i_type, +vlc_custom_create (vlc_object_t *p_this, size_t i_size, int i_type, const char *psz_type); #define vlc_custom_create(o, s, t, n) \ - __vlc_custom_create(VLC_OBJECT(o), s, t, n) + vlc_custom_create(VLC_OBJECT(o), s, t, n) /** * Assign a name to an object for vlc_object_find_name(). @@ -184,7 +175,6 @@ struct vlc_object_internals vlc_object_internals_t *next; /* next sibling */ vlc_object_internals_t *prev; /* previous sibling */ vlc_object_internals_t *first; /* first child */ - vlc_object_t *old_parent; }; #define ZOOM_SECTION N_("Zoom") @@ -206,13 +196,12 @@ typedef struct libvlc_priv_t libvlc_int_t public_data; int i_last_input_id ; ///< Last id of input item + bool playlist_active; /* Messages */ - msg_bank_t msg_bank; ///< The message bank + msg_bank_t *msg_bank; ///< The message bank int i_verbose; ///< info messages - vlc_dictionary_t msg_enabled_objects; ///< Enabled objects bool b_color; ///< color messages? - bool msg_all_objects_enabled; ///< Should we print all objects? /* Timer stats */ bool b_stats; ///< Whether to collect stats @@ -235,6 +224,9 @@ typedef struct libvlc_priv_t /* Objects tree */ vlc_mutex_t structure_lock; + + /* Exit callback */ + vlc_exit_t exit; } libvlc_priv_t; static inline libvlc_priv_t *libvlc_priv (libvlc_int_t *libvlc) @@ -262,40 +254,39 @@ void var_OptionParse (vlc_object_t *, const char *, bool trusted); /* * Stats stuff */ -#define stats_Update(a,b,c) __stats_Update( VLC_OBJECT(a), b, c ) -int __stats_Update (vlc_object_t*, counter_t *, vlc_value_t, vlc_value_t *); -#define stats_CounterCreate(a,b,c) __stats_CounterCreate( VLC_OBJECT(a), b, c ) -counter_t * __stats_CounterCreate (vlc_object_t*, int, int); -#define stats_Get(a,b,c) __stats_Get( VLC_OBJECT(a), b, c) -int __stats_Get (vlc_object_t*, counter_t *, vlc_value_t*); +int stats_Update (vlc_object_t*, counter_t *, vlc_value_t, vlc_value_t *); +counter_t * stats_CounterCreate (vlc_object_t*, int, int); +#define stats_CounterCreate(a,b,c) stats_CounterCreate( VLC_OBJECT(a), b, c ) +int stats_Get (vlc_object_t*, counter_t *, vlc_value_t*); +#define stats_Get(a,b,c) stats_Get( VLC_OBJECT(a), b, c) void stats_CounterClean (counter_t * ); -#define stats_GetInteger(a,b,c) __stats_GetInteger( VLC_OBJECT(a), b, c ) -static inline int __stats_GetInteger( vlc_object_t *p_obj, counter_t *p_counter, - int *value ) +static inline int stats_GetInteger( vlc_object_t *p_obj, counter_t *p_counter, + int *value ) { int i_ret; vlc_value_t val; val.i_int = 0; if( !p_counter ) return VLC_EGENERIC; - i_ret = __stats_Get( p_obj, p_counter, &val ); + i_ret = stats_Get( p_obj, p_counter, &val ); *value = val.i_int; return i_ret; } +#define stats_GetInteger(a,b,c) stats_GetInteger( VLC_OBJECT(a), b, c ) -#define stats_GetFloat(a,b,c) __stats_GetFloat( VLC_OBJECT(a), b, c ) -static inline int __stats_GetFloat( vlc_object_t *p_obj, counter_t *p_counter, +static inline int stats_GetFloat( vlc_object_t *p_obj, counter_t *p_counter, float *value ) { int i_ret; vlc_value_t val; val.f_float = 0.0; if( !p_counter ) return VLC_EGENERIC; - i_ret = __stats_Get( p_obj, p_counter, &val ); + i_ret = stats_Get( p_obj, p_counter, &val ); *value = val.f_float; return i_ret; } -#define stats_UpdateInteger(a,b,c,d) __stats_UpdateInteger( VLC_OBJECT(a),b,c,d ) -static inline int __stats_UpdateInteger( vlc_object_t *p_obj,counter_t *p_co, +#define stats_GetFloat(a,b,c) stats_GetFloat( VLC_OBJECT(a), b, c ) + +static inline int stats_UpdateInteger( vlc_object_t *p_obj,counter_t *p_co, int i, int *pi_new ) { int i_ret; @@ -303,13 +294,14 @@ static inline int __stats_UpdateInteger( vlc_object_t *p_obj,counter_t *p_co, vlc_value_t new_val; new_val.i_int = 0; if( !p_co ) return VLC_EGENERIC; val.i_int = i; - i_ret = __stats_Update( p_obj, p_co, val, &new_val ); + i_ret = stats_Update( p_obj, p_co, val, &new_val ); if( pi_new ) *pi_new = new_val.i_int; return i_ret; } -#define stats_UpdateFloat(a,b,c,d) __stats_UpdateFloat( VLC_OBJECT(a),b,c,d ) -static inline int __stats_UpdateFloat( vlc_object_t *p_obj, counter_t *p_co, +#define stats_UpdateInteger(a,b,c,d) stats_UpdateInteger( VLC_OBJECT(a),b,c,d ) + +static inline int stats_UpdateFloat( vlc_object_t *p_obj, counter_t *p_co, float f, float *pf_new ) { vlc_value_t val; @@ -317,11 +309,12 @@ static inline int __stats_UpdateFloat( vlc_object_t *p_obj, counter_t *p_co, vlc_value_t new_val;new_val.f_float = 0.0; if( !p_co ) return VLC_EGENERIC; val.f_float = f; - i_ret = __stats_Update( p_obj, p_co, val, &new_val ); + i_ret = stats_Update( p_obj, p_co, val, &new_val ); if( pf_new ) *pf_new = new_val.f_float; return i_ret; } +#define stats_UpdateFloat(a,b,c,d) stats_UpdateFloat( VLC_OBJECT(a),b,c,d ) VLC_EXPORT( void, stats_ComputeInputStats, (input_thread_t*, input_stats_t*) ); VLC_EXPORT( void, stats_ReinitInputStats, (input_stats_t *) );