]> git.sesse.net Git - vlc/blobdiff - src/modules/modules.c
Split file path functions out of vlc_charset.h into vlc_fs.h
[vlc] / src / modules / modules.c
index 8c4d009e0d5a4417228ebf137d2707d531e74571..5664521488d60295624344820925cc9a94401797 100644 (file)
@@ -55,7 +55,7 @@
 
 #include "config/configuration.h"
 
-#include "vlc_charset.h"
+#include <vlc_fs.h>
 #include "vlc_arrays.h"
 
 #include "modules/modules.h"
@@ -83,6 +83,7 @@ static void   DupModule        ( module_t * );
 static void   UndupModule      ( module_t * );
 #endif
 
+#undef module_InitBank
 /**
  * Init bank
  *
@@ -91,7 +92,7 @@ static void   UndupModule      ( module_t * );
  * \param p_this vlc object structure
  * \return nothing
  */
-void __module_InitBank( vlc_object_t *p_this )
+void module_InitBank( vlc_object_t *p_this )
 {
     module_bank_t *p_bank = NULL;
 
@@ -200,7 +201,7 @@ void module_EndBank( vlc_object_t *p_this, bool b_plugins )
  * \param p_this vlc object structure
  * \return nothing
  */
-void module_LoadPlugins( vlc_object_t * p_this, bool b_cache_delete )
+void module_LoadPlugins( vlc_object_t * p_this )
 {
     module_bank_t *p_bank = p_module_bank;
 
@@ -213,11 +214,7 @@ void module_LoadPlugins( vlc_object_t * p_this, bool b_cache_delete )
         msg_Dbg( p_this, "checking plugin modules" );
         p_module_bank->b_cache = var_InheritBool( p_this, "plugins-cache" );
 
-        if( p_module_bank->b_cache || b_cache_delete )
-            CacheLoad( p_this, p_module_bank, b_cache_delete );
         AllocateAllPlugins( p_this, p_module_bank );
-        if( p_module_bank->b_cache )
-            CacheSave( p_this, p_bank );
         config_UnsortConfig ();
         config_SortConfig ();
     }
@@ -391,6 +388,7 @@ static int modulecmp (const void *a, const void *b)
     return lb->i_score - la->i_score;
 }
 
+#undef module_need
 /**
  * module Need
  *
@@ -403,8 +401,8 @@ static int modulecmp (const void *a, const void *b)
  *                 but the same capability
  * \return the module or NULL in case of a failure
  */
-module_t * __module_need( vlc_object_t *p_this, const char *psz_capability,
-                          const char *psz_name, bool b_strict )
+module_t * module_need( vlc_object_t *p_this, const char *psz_capability,
+                        const char *psz_name, bool b_strict )
 {
     stats_TimerStart( p_this, "module_need()", STATS_TIMER_MODULE_NEED );
 
@@ -628,6 +626,7 @@ found_shortcut:
     return p_module;
 }
 
+#undef module_unneed
 /**
  * Module unneed
  *
@@ -637,7 +636,7 @@ found_shortcut:
  * \param p_module the module structure
  * \return nothing
  */
-void __module_unneed( vlc_object_t * p_this, module_t * p_module )
+void module_unneed( vlc_object_t * p_this, module_t * p_module )
 {
     /* Use the close method */
     if( p_module->pf_deactivate )
@@ -836,6 +835,7 @@ static void AllocateAllPlugins( vlc_object_t *p_this, module_bank_t *p_bank )
     int count,i;
     char * path;
     vlc_array_t *arraypaths = vlc_array_new();
+    const bool b_reset = var_InheritBool( p_this, "reset-plugins-cache" );
 
     /* Contruct the special search path for system that have a relocatable
      * executable. Set it to <vlc path>/modules and <vlc path>/plugins. */
@@ -866,11 +866,19 @@ static void AllocateAllPlugins( vlc_object_t *p_this, module_bank_t *p_bank )
         if( !path )
             continue;
 
+        size_t offset = p_module_bank->i_loaded_cache;
+        if( b_reset )
+            CacheDelete( p_this, path );
+        else
+            CacheLoad( p_this, p_module_bank, path );
+
         msg_Dbg( p_this, "recursively browsing `%s'", path );
 
         /* Don't go deeper than 5 subdirectories */
         AllocatePluginDir( p_this, p_bank, path, 5 );
 
+        CacheSave( p_this, path, p_module_bank->pp_loaded_cache + offset,
+                   p_module_bank->i_loaded_cache - offset );
         free( path );
     }