X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Flibvlc.h;h=02bdfaaddbd6eb80de2d72d920015bbd18715ff1;hb=12ade3e3bc975d5426ba4af155b7372c31093b31;hp=aeb532220feed9a0ef4248007c88b0381d14a02d;hpb=ec56260552eb41d3931949a54453caba058acc78;p=vlc diff --git a/src/libvlc.h b/src/libvlc.h index aeb532220f..02bdfaaddb 100644 --- a/src/libvlc.h +++ b/src/libvlc.h @@ -25,6 +25,8 @@ #ifndef LIBVLC_LIBVLC_H # define LIBVLC_LIBVLC_H 1 +#include + typedef struct variable_t variable_t; /* Actions (hot keys) */ @@ -42,15 +44,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 */ @@ -93,13 +89,26 @@ void msg_Destroy (msg_bank_t *); 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 */ @@ -168,7 +177,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") @@ -205,7 +213,9 @@ typedef struct libvlc_priv_t /* Singleton objects */ module_t *p_memcpy_module; ///< Fast memcpy plugin used - playlist_t *p_playlist; //< the playlist singleton + playlist_t *p_playlist; ///< the playlist singleton + media_library_t *p_ml; ///< the ML singleton + vlc_mutex_t ml_lock; ///< Mutex for ML creation vlm_t *p_vlm; ///< the VLM singleton (or NULL) vlc_object_t *p_dialog_provider; ///< dialog provider httpd_t *p_httpd; ///< HTTP daemon (src/network/httpd.c) @@ -218,6 +228,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) @@ -245,40 +258,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, + int64_t *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; @@ -286,13 +298,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; @@ -300,11 +313,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 *) ); @@ -313,32 +327,10 @@ VLC_EXPORT( void, stats_DumpInputStats, (input_stats_t *) ); /* * Replacement functions */ -# ifndef HAVE_DIRENT_H -typedef void DIR; -# ifndef FILENAME_MAX -# define FILENAME_MAX (260) -# endif -struct dirent -{ - long d_ino; /* Always zero. */ - unsigned short d_reclen; /* Always zero. */ - unsigned short d_namlen; /* Length of name in d_name. */ - char d_name[FILENAME_MAX]; /* File name. */ -}; -# define opendir vlc_opendir -# define readdir vlc_readdir -# define closedir vlc_closedir -# define rewinddir vlc_rewindir -void *vlc_opendir (const char *); -void *vlc_readdir (void *); -int vlc_closedir(void *); -void vlc_rewinddir(void *); -# endif - #if defined (WIN32) # include void *vlc_wopendir (const wchar_t *); -/* void *vlc_wclosedir (void *); in vlc's exported symbols */ +void *vlc_wclosedir (void *); struct _wdirent *vlc_wreaddir (void *); void vlc_rewinddir (void *); # define _wopendir vlc_wopendir