[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