X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Flibvlc.h;h=629a28fe7dd3dcdf41047037fc1438c8e458e034;hb=c9d2fec1cf62e423a428b33a15a424387da37edb;hp=94c21304d2c633dc4cea27cc08d0277de549b5c9;hpb=b8247ace0350412681e0bc502f8bb617cfa426b8;p=vlc diff --git a/src/libvlc.h b/src/libvlc.h index 94c21304d2..629a28fe7d 100644 --- a/src/libvlc.h +++ b/src/libvlc.h @@ -27,8 +27,6 @@ typedef struct variable_t variable_t; -extern const char vlc_usage[]; - /* Actions (hot keys) */ typedef struct action { @@ -53,17 +51,20 @@ void system_End ( libvlc_int_t * ); #define vlc_object_signal_unlocked( obj ) vlc_list_t *vlc_list_find( vlc_object_t *, int, int ); -#define VLC_OBJECT_INTF (-4) -#define VLC_OBJECT_PACKETIZER (-13) /* * Threads subsystem */ +/* This cannot be used as is from plugins: */ +void vlc_detach (vlc_thread_t); + /* Hopefully, no need to export this. There is a new thread API instead. */ void vlc_thread_cancel (vlc_object_t *); int vlc_object_waitpipe (vlc_object_t *obj); +void vlc_threads_setup (libvlc_int_t *); + void vlc_trace (const char *fn, const char *file, unsigned line); #define vlc_backtrace() vlc_trace(__func__, __FILE__, __LINE__) @@ -89,8 +90,7 @@ uint32_t CPUCapabilities( void ); typedef struct msg_bank_t { /** Message queue lock */ - vlc_mutex_t lock; - vlc_cond_t wait; + vlc_rwlock_t lock; /* Subscribers */ int i_sub; @@ -140,16 +140,17 @@ __vlc_custom_create (vlc_object_t *p_this, size_t i_size, int i_type, #define vlc_custom_create(o, s, t, n) \ __vlc_custom_create(VLC_OBJECT(o), s, t, n) +/** + * Assign a name to an object for vlc_object_find_name(). + */ +extern int vlc_object_set_name(vlc_object_t *, const char *); +#define vlc_object_set_name(o, n) vlc_object_set_name(VLC_OBJECT(o), n) + /* * To be cleaned-up module stuff: */ extern char *psz_vlcpath; -/* Return a NULL terminated array with the names of the modules that have a - * certain capability. - * Free after uses both the string and the table. */ -char **module_GetModulesNamesForCapability (const char * psz_capability, - char ***psz_longname); module_t *module_find_by_shortcut (const char *psz_shortcut); /** @@ -158,6 +159,7 @@ module_t *module_find_by_shortcut (const char *psz_shortcut); typedef struct vlc_object_internals_t { int i_object_type; /* Object type, deprecated */ + char *psz_name; /* given name */ /* Object variables */ variable_t * p_vars; @@ -178,7 +180,6 @@ typedef struct vlc_object_internals_t vlc_destructor_t pf_destructor; /* Objects tree structure */ - vlc_object_t *prev, *next; vlc_object_t **pp_children; int i_children; } vlc_object_internals_t; @@ -206,15 +207,15 @@ typedef struct libvlc_priv_t /* Messages */ msg_bank_t msg_bank; ///< The message bank int i_verbose; ///< info messages - bool b_color; ///< color 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 vlc_mutex_t timer_lock; ///< Lock to protect timers counter_t **pp_timers; ///< Array of all timers int i_timers; ///< Number of timers - bool b_stats; ///< Whether to collect stats /* Singleton objects */ module_t *p_memcpy_module; ///< Fast memcpy plugin used @@ -225,6 +226,11 @@ typedef struct libvlc_priv_t #ifdef ENABLE_SOUT sap_handler_t *p_sap; ///< SAP SDP advertiser #endif + + /* Interfaces */ + struct intf_thread_t *p_intf; ///< Interfaces linked-list + + /* Objects tree */ vlc_mutex_t structure_lock; } libvlc_priv_t; @@ -234,6 +240,7 @@ static inline libvlc_priv_t *libvlc_priv (libvlc_int_t *libvlc) } void playlist_ServicesDiscoveryKillAll( playlist_t *p_playlist ); +void intf_DestroyAll( libvlc_int_t * ); #define libvlc_stats( o ) (libvlc_priv((VLC_OBJECT(o))->p_libvlc)->b_stats)