From 4d563ce4d15d4cf67e00549d320f5350f7494e93 Mon Sep 17 00:00:00 2001 From: Dentomologist Date: Tue, 31 May 2022 16:14:59 -0700 Subject: [PATCH 1/3] Android: Ensure File::s_android_sys_directory is set only once --- Source/Core/Common/FileUtil.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Source/Core/Common/FileUtil.cpp b/Source/Core/Common/FileUtil.cpp index a218f6cb8e..8e42e0f42e 100644 --- a/Source/Core/Common/FileUtil.cpp +++ b/Source/Core/Common/FileUtil.cpp @@ -921,6 +921,8 @@ std::string GetSysDirectory() void SetSysDirectory(const std::string& path) { INFO_LOG_FMT(COMMON, "Setting Sys directory to {}", path); + ASSERT_MSG(COMMON, s_android_sys_directory.empty(), "Sys directory already set to {}", + s_android_sys_directory); s_android_sys_directory = path; } #endif From c2be78079c96440edf672c1bce9ebfafcb4ec283 Mon Sep 17 00:00:00 2001 From: Dentomologist Date: Fri, 27 May 2022 14:25:43 -0700 Subject: [PATCH 2/3] FileUtil: Remove GetSysDirectory log spam Create and log path the first time GetSysDirectory is called, then just return the path on future calls. --- Source/Core/Common/FileUtil.cpp | 10 ++++++++-- Source/Core/Common/FileUtil.h | 2 +- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/Source/Core/Common/FileUtil.cpp b/Source/Core/Common/FileUtil.cpp index 8e42e0f42e..5707507a42 100644 --- a/Source/Core/Common/FileUtil.cpp +++ b/Source/Core/Common/FileUtil.cpp @@ -885,7 +885,7 @@ std::string GetExeDirectory() #endif } -std::string GetSysDirectory() +static std::string CreateSysDirectoryPath() { std::string sysDir; @@ -913,10 +913,16 @@ std::string GetSysDirectory() #endif sysDir += DIR_SEP; - INFO_LOG_FMT(COMMON, "GetSysDirectory: Setting to {}:", sysDir); + INFO_LOG_FMT(COMMON, "CreateSysDirectoryPath: Setting to {}", sysDir); return sysDir; } +const std::string& GetSysDirectory() +{ + static const std::string sys_directory = CreateSysDirectoryPath(); + return sys_directory; +} + #ifdef ANDROID void SetSysDirectory(const std::string& path) { diff --git a/Source/Core/Common/FileUtil.h b/Source/Core/Common/FileUtil.h index 0542cb3402..2672e237de 100644 --- a/Source/Core/Common/FileUtil.h +++ b/Source/Core/Common/FileUtil.h @@ -215,7 +215,7 @@ void SetUserPath(unsigned int dir_index, std::string path); std::string GetThemeDir(const std::string& theme_name); // Returns the path to where the sys file are -std::string GetSysDirectory(); +const std::string& GetSysDirectory(); #ifdef ANDROID void SetSysDirectory(const std::string& path); From e0c9ae16b97a32ef4b778729200e4a9e552ce665 Mon Sep 17 00:00:00 2001 From: Dentomologist Date: Fri, 27 May 2022 23:49:28 -0700 Subject: [PATCH 3/3] FileUtil: Refactor CreateSysDirectoryPath() --- Source/Core/Common/FileUtil.cpp | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/Source/Core/Common/FileUtil.cpp b/Source/Core/Common/FileUtil.cpp index 5707507a42..522d3028fa 100644 --- a/Source/Core/Common/FileUtil.cpp +++ b/Source/Core/Common/FileUtil.cpp @@ -887,8 +887,6 @@ std::string GetExeDirectory() static std::string CreateSysDirectoryPath() { - std::string sysDir; - #if defined(_WIN32) || defined(LINUX_LOCAL_DEV) #define SYSDATA_DIR "Sys" #elif defined __APPLE__ @@ -902,19 +900,18 @@ static std::string CreateSysDirectoryPath() #endif #if defined(__APPLE__) - sysDir = GetBundleDirectory() + DIR_SEP + SYSDATA_DIR; + const std::string sys_directory = GetBundleDirectory() + DIR_SEP SYSDATA_DIR DIR_SEP; #elif defined(_WIN32) || defined(LINUX_LOCAL_DEV) - sysDir = GetExeDirectory() + DIR_SEP + SYSDATA_DIR; + const std::string sys_directory = GetExeDirectory() + DIR_SEP SYSDATA_DIR DIR_SEP; #elif defined ANDROID - sysDir = s_android_sys_directory; - ASSERT_MSG(COMMON, !sysDir.empty(), "Sys directory has not been set"); + const std::string sys_directory = s_android_sys_directory + DIR_SEP; + ASSERT_MSG(COMMON, !s_android_sys_directory.empty(), "Sys directory has not been set"); #else - sysDir = SYSDATA_DIR; + const std::string sys_directory = SYSDATA_DIR DIR_SEP; #endif - sysDir += DIR_SEP; - INFO_LOG_FMT(COMMON, "CreateSysDirectoryPath: Setting to {}", sysDir); - return sysDir; + INFO_LOG_FMT(COMMON, "CreateSysDirectoryPath: Setting to {}", sys_directory); + return sys_directory; } const std::string& GetSysDirectory()