X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fmodules%2Fmodules.h;h=74bc8f72fd4ba0c5d7b97fee69c1bc0e5542194c;hb=20fcfd5809bf87e20fcd552b3397c0f5cd51a8ab;hp=c28fccb5883ca2b126cacc1ee6f23f4a9af6d77b;hpb=8952d64a5751065f0a96e66e25fdd187bff1d7ad;p=vlc diff --git a/src/modules/modules.h b/src/modules/modules.h index c28fccb588..74bc8f72fd 100644 --- a/src/modules/modules.h +++ b/src/modules/modules.h @@ -2,7 +2,7 @@ * modules.h : Module management functions. ***************************************************************************** * Copyright (C) 2001 the VideoLAN team - * $Id: modules.h 17958 2006-11-22 17:13:24Z courmisch $ + * $Id$ * * Authors: Samuel Hocevar * @@ -21,6 +21,14 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************/ +#if defined(__PLUGIN__) || defined(__BUILTIN__) || !defined(__LIBVLC__) +# error This header file can only be included from LibVLC. +#endif + +#ifndef __LIBVLC_MODULES_H +# define __LIBVLC_MODULES_H 1 + + /* Number of tries before we unload an unused module */ #define MODULE_HIDE_DELAY 50 @@ -31,24 +39,22 @@ *****************************************************************************/ struct module_bank_t { - VLC_COMMON_MEMBERS + unsigned i_usage; - int i_usage; - - vlc_bool_t b_main; - vlc_bool_t b_builtins; - vlc_bool_t b_plugins; + bool b_builtins; + bool b_plugins; /* Plugins cache */ - vlc_bool_t b_cache; - vlc_bool_t b_cache_dirty; - vlc_bool_t b_cache_delete; + bool b_cache; + bool b_cache_dirty; int i_cache; module_cache_t **pp_cache; int i_loaded_cache; module_cache_t **pp_loaded_cache; + + module_t *head; }; /***************************************************************************** @@ -60,15 +66,14 @@ struct module_cache_t char *psz_file; int64_t i_time; int64_t i_size; - vlc_bool_t b_junk; + bool b_junk; /* Optional extra data */ module_t *p_module; - vlc_bool_t b_used; + bool b_used; }; -#if 0 #define MODULE_SHORTCUT_MAX 50 /* The module handle type. */ @@ -92,30 +97,31 @@ typedef shl_t module_handle_t; */ struct module_t { - VLC_COMMON_MEMBERS + char *psz_object_name; + module_t *next; + module_t *submodule; + module_t *parent; + unsigned submodule_count; + gc_object_t vlc_gc_data; + vlc_mutex_t lock; /* * Variables set by the module to identify itself */ - const char *psz_shortname; /**< Module name */ - const char *psz_longname; /**< Module descriptive name */ - const char *psz_help; /**< Long help string for "special" modules */ - - /* - * Variables set by the module to tell us what it can do - */ - const char *psz_program; /**< Program name which will activate the module */ + char *psz_shortname; /**< Module name */ + char *psz_longname; /**< Module descriptive name */ + char *psz_help; /**< Long help string for "special" modules */ /** Shortcuts to the module */ - const char *pp_shortcuts[ MODULE_SHORTCUT_MAX ]; + char *pp_shortcuts[ MODULE_SHORTCUT_MAX ]; - const char *psz_capability; /**< Capability */ + char *psz_capability; /**< Capability */ int i_score; /**< Score for the capability */ uint32_t i_cpu; /**< Required CPU capabilities */ - vlc_bool_t b_unloadable; /**< Can we be dlclosed? */ - vlc_bool_t b_reentrant; /**< Are we reentrant? */ - vlc_bool_t b_submodule; /**< Is this a submodule? */ + bool b_unloadable; /**< Can we be dlclosed? */ + bool b_reentrant; /**< Are we reentrant? */ + bool b_submodule; /**< Is this a submodule? */ /* Callbacks */ int ( * pf_activate ) ( vlc_object_t * ); @@ -136,19 +142,30 @@ struct module_t module_handle_t handle; /* Unique handle */ char * psz_filename; /* Module filename */ - vlc_bool_t b_builtin; /* Set to true if the module is built in */ - vlc_bool_t b_loaded; /* Set to true if the dll is loaded */ + bool b_builtin; /* Set to true if the module is built in */ + bool b_loaded; /* Set to true if the dll is loaded */ }; -#endif - #define module_InitBank(a) __module_InitBank(VLC_OBJECT(a)) void __module_InitBank ( vlc_object_t * ); #define module_LoadBuiltins(a) __module_LoadBuiltins(VLC_OBJECT(a)) void __module_LoadBuiltins ( vlc_object_t * ); -#define module_LoadPlugins(a) __module_LoadPlugins(VLC_OBJECT(a)) -void __module_LoadPlugins ( vlc_object_t * ); +void module_LoadPlugins( vlc_object_t *, bool ); +#define module_LoadPlugins(a,b) module_LoadPlugins(VLC_OBJECT(a),b) #define module_EndBank(a) __module_EndBank(VLC_OBJECT(a)) void __module_EndBank ( vlc_object_t * ); #define module_ResetBank(a) __module_ResetBank(VLC_OBJECT(a)) void __module_ResetBank ( vlc_object_t * ); + +/* Low-level OS-dependent handler */ +int module_Load (vlc_object_t *, const char *, module_handle_t *); +int module_Call (vlc_object_t *obj, module_t *); +void module_Unload (module_handle_t); + +/* Plugins cache */ +void CacheMerge (vlc_object_t *, module_t *, module_t *); +void CacheLoad (vlc_object_t *, module_bank_t *, bool); +void CacheSave (vlc_object_t *, module_bank_t *); +module_cache_t * CacheFind (module_bank_t *, const char *, int64_t, int64_t); + +#endif /* !__LIBVLC_MODULES_H */