[vlc-commits] commit: Win32: Store the plugins cache in c:\ProgramData\VideoLAN\VLC, run vlc-cache-gen.exe at install time, and as a bonus, fixes #3308 ( Geoffroy Couprie )

git version control git at videolan.org
Fri Mar 5 20:36:38 CET 2010


vlc | branch: master | Geoffroy Couprie <geal at videolan.org> | Wed Mar  3 18:49:59 2010 +0100| [0704d00ff7135d8283d70a3e45a98163f0d0ceec] | committer: Geoffroy Couprie 

Win32: Store the plugins cache in c:\ProgramData\VideoLAN\VLC, run vlc-cache-gen.exe at install time, and as a bonus, fixes #3308

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=0704d00ff7135d8283d70a3e45a98163f0d0ceec
---

 extras/package/win32/vlc.win32.nsi.in |   13 +++++++++++++
 src/modules/modules.c                 |   27 ++++++++++++++++++++++++++-
 2 files changed, 39 insertions(+), 1 deletions(-)

diff --git a/extras/package/win32/vlc.win32.nsi.in b/extras/package/win32/vlc.win32.nsi.in
index 0326326..f7712f9 100644
--- a/extras/package/win32/vlc.win32.nsi.in
+++ b/extras/package/win32/vlc.win32.nsi.in
@@ -314,6 +314,14 @@ FunctionEnd
 ; 3. Delete prefs and cache ;
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
+!macro gencache
+  SetShellVarContext all
+  CreateDirectory "$APPDATA\\VideoLAN"
+  CreateDirectory "$APPDATA\\VideoLAN\\VLC"
+  ExecWait "$INSTDIR\vlc-cache-gen.exe $APPDATA\\VideoLAN\\VLC"
+  SetShellVarContext current
+!macroend
+
 !macro delprefs
   StrCpy $0 0
   !define Index 'Line${__LINE__}'
@@ -331,6 +339,9 @@ FunctionEnd
     Goto "${Index}-Loop"
   "${Index}-End:"
   !undef Index
+  SetShellVarContext all
+  RMDir /r "$APPDATA\\VideoLAN"
+  SetShellVarContext current
 !macroend
 
 ;;;;;;;;;;;;;;;
@@ -414,6 +425,7 @@ Section $Name_Section01 SEC01
   ; VLC.exe, libvlc.dll
   !insertmacro InstallFile vlc.exe
   !insertmacro InstallFile vlc.exe.manifest
+  !insertmacro InstallFile vlc-cache-gen.exe
 
   ; All dlls
   !insertmacro InstallFile *.dll
@@ -428,6 +440,7 @@ Section $Name_Section01 SEC01
 @BUILD_SKINS_TRUE@   !insertmacro InstallFolder skins
 @BUILD_HTTPD_TRUE@   !insertmacro InstallFolder http
 @BUILD_LUA_TRUE@     !insertmacro InstallFolder lua
+  !insertmacro gencache
 
 
   ; URLs
diff --git a/src/modules/modules.c b/src/modules/modules.c
index 1e4a4df..183b748 100644
--- a/src/modules/modules.c
+++ b/src/modules/modules.c
@@ -821,9 +821,20 @@ static void AllocateAllPlugins( vlc_object_t *p_this, module_bank_t *p_bank )
     /* Contruct the special search path for system that have a relocatable
      * executable. Set it to <vlc path>/plugins. */
     assert( vlcpath );
-
+#ifndef WIN32
     if( asprintf( &path, "%s" DIR_SEP "plugins", vlcpath ) != -1 )
         vlc_array_append( arraypaths, path );
+#else
+    /* Store the plugins cache in the common AppData folder */
+    char commonpath[PATH_MAX] = "";
+    int res = snprintf( commonpath, PATH_MAX -1, "%s\\VideoLAN\\VLC", config_GetConfDir());
+        if(res == -1 || res >= PATH_MAX)
+        {
+            vlc_array_destroy( arraypaths );
+            free(path);
+            return;
+        }
+#endif
 
     /* If the user provided a plugin path, we add it to the list */
     char *userpaths = var_InheritString( p_this, "plugin-path" );
@@ -845,17 +856,31 @@ static void AllocateAllPlugins( vlc_object_t *p_this, module_bank_t *p_bank )
 
         size_t offset = p_module_bank->i_cache;
         if( b_reset )
+#ifndef WIN32
             CacheDelete( p_this, path );
+#else
+            CacheDelete( p_this, commonpath );
+#endif
         else
+#ifndef WIN32
             CacheLoad( p_this, p_module_bank, path );
+#else
+             CacheLoad( p_this, p_module_bank, commonpath );
+#endif
 
         msg_Dbg( p_this, "recursively browsing `%s'", path );
 
         /* Don't go deeper than 5 subdirectories */
         AllocatePluginDir( p_this, p_bank, path, 5 );
 
+
+#ifndef WIN32
         CacheSave( p_this, path, p_module_bank->pp_cache + offset,
                    p_module_bank->i_cache - offset );
+#else
+        CacheSave( p_this, commonpath, p_module_bank->pp_cache + offset,
+                   p_module_bank->i_cache - offset );
+#endif
         free( path );
     }
 



More information about the vlc-commits mailing list