Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeroen Bakker <jbakker>2021-10-12 09:42:08 +0300
committerJeroen Bakker <jeroen@blender.org>2021-10-12 09:42:25 +0300
commit70fd6a313e70ead89f94090d1de3d90032f778d5 (patch)
tree1d1887377ecabfa9660f245acbc47515721c19a7 /intern/ghost
parent8f66f4031855d1414f1d7475ca7dbc551fc8b0bc (diff)
GHOST: Add option to request (user) cache folder.
Introduces `BKE_appdir_folder_caches` to get the folder that can be used to store caches. On different OS's different folders are used. - Linux: `~/.cache/blender/`. - MacOS: `Library/Caches/Blender/`. - Windows: `(%USERPROFILE%\AppData\Local)\Blender Foundation\Blender\Cache\`. Reviewed By: Severin Differential Revision: https://developer.blender.org/D12822
Diffstat (limited to 'intern/ghost')
-rw-r--r--intern/ghost/GHOST_Types.h1
-rw-r--r--intern/ghost/intern/GHOST_SystemPathsCocoa.mm3
-rw-r--r--intern/ghost/intern/GHOST_SystemPathsUnix.cpp17
-rw-r--r--intern/ghost/intern/GHOST_SystemPathsWin32.cpp3
4 files changed, 24 insertions, 0 deletions
diff --git a/intern/ghost/GHOST_Types.h b/intern/ghost/GHOST_Types.h
index 221fa140f70..898ee451baf 100644
--- a/intern/ghost/GHOST_Types.h
+++ b/intern/ghost/GHOST_Types.h
@@ -569,6 +569,7 @@ typedef enum {
GHOST_kUserSpecialDirMusic,
GHOST_kUserSpecialDirPictures,
GHOST_kUserSpecialDirVideos,
+ GHOST_kUserSpecialDirCaches,
/* Can be extended as needed. */
} GHOST_TUserSpecialDirTypes;
diff --git a/intern/ghost/intern/GHOST_SystemPathsCocoa.mm b/intern/ghost/intern/GHOST_SystemPathsCocoa.mm
index 3b29d5106f6..43ce0bb0533 100644
--- a/intern/ghost/intern/GHOST_SystemPathsCocoa.mm
+++ b/intern/ghost/intern/GHOST_SystemPathsCocoa.mm
@@ -117,6 +117,9 @@ const char *GHOST_SystemPathsCocoa::getUserSpecialDir(GHOST_TUserSpecialDirTypes
case GHOST_kUserSpecialDirVideos:
ns_directory = NSMoviesDirectory;
break;
+ case GHOST_kUserSpecialDirCaches:
+ ns_directory = NSCachesDirectory;
+ break;
default:
GHOST_ASSERT(
false,
diff --git a/intern/ghost/intern/GHOST_SystemPathsUnix.cpp b/intern/ghost/intern/GHOST_SystemPathsUnix.cpp
index 8bc2ff9227d..72396782752 100644
--- a/intern/ghost/intern/GHOST_SystemPathsUnix.cpp
+++ b/intern/ghost/intern/GHOST_SystemPathsUnix.cpp
@@ -114,6 +114,7 @@ const char *GHOST_SystemPathsUnix::getUserDir(int version, const char *versionst
const char *GHOST_SystemPathsUnix::getUserSpecialDir(GHOST_TUserSpecialDirTypes type) const
{
const char *type_str;
+ std::string add_path = "";
switch (type) {
case GHOST_kUserSpecialDirDesktop:
@@ -134,6 +135,18 @@ const char *GHOST_SystemPathsUnix::getUserSpecialDir(GHOST_TUserSpecialDirTypes
case GHOST_kUserSpecialDirVideos:
type_str = "VIDEOS";
break;
+ case GHOST_kUserSpecialDirCaches: {
+ const char *cache_dir = getenv("XDG_CACHE_HOME");
+ if (cache_dir) {
+ return cache_dir;
+ }
+ /* Fallback to ~home/.cache/.
+ * When invoking `xdg-user-dir` without parameters the user folder
+ * will be read. `.cache` will be appended. */
+ type_str = "";
+ add_path = ".cache";
+ break;
+ }
default:
GHOST_ASSERT(
false,
@@ -163,6 +176,10 @@ const char *GHOST_SystemPathsUnix::getUserSpecialDir(GHOST_TUserSpecialDirTypes
return NULL;
}
+ if (!add_path.empty()) {
+ path_stream << '/' << add_path;
+ }
+
path = path_stream.str();
return path[0] ? path.c_str() : NULL;
}
diff --git a/intern/ghost/intern/GHOST_SystemPathsWin32.cpp b/intern/ghost/intern/GHOST_SystemPathsWin32.cpp
index 580cfcac7ba..bced552921f 100644
--- a/intern/ghost/intern/GHOST_SystemPathsWin32.cpp
+++ b/intern/ghost/intern/GHOST_SystemPathsWin32.cpp
@@ -100,6 +100,9 @@ const char *GHOST_SystemPathsWin32::getUserSpecialDir(GHOST_TUserSpecialDirTypes
case GHOST_kUserSpecialDirVideos:
folderid = FOLDERID_Videos;
break;
+ case GHOST_kUserSpecialDirCaches:
+ folderid = FOLDERID_LocalAppData;
+ break;
default:
GHOST_ASSERT(
false,