From 571d3d3ba01e135a1d56149c06e778e8c4f7669b Mon Sep 17 00:00:00 2001 From: Deve Date: Thu, 25 Oct 2018 22:16:56 +0200 Subject: [PATCH] Minor optimization for assets extraction --- android/generate_assets.sh | 2 +- src/io/assets_android.cpp | 11 +++++++++-- src/io/file_manager.cpp | 16 +++++++--------- src/io/file_manager.hpp | 2 +- 4 files changed, 18 insertions(+), 13 deletions(-) diff --git a/android/generate_assets.sh b/android/generate_assets.sh index 36d542792..0c224c196 100755 --- a/android/generate_assets.sh +++ b/android/generate_assets.sh @@ -607,7 +607,7 @@ fi # Generate directories list echo "Generate directories list" -find assets/* -type d > assets/directories.txt +find assets/* -type d | sort > assets/directories.txt sed -i s/'.\/assets\/'// assets/directories.txt sed -i s/'assets\/'// assets/directories.txt diff --git a/src/io/assets_android.cpp b/src/io/assets_android.cpp index ea8ef814c..178543e00 100644 --- a/src/io/assets_android.cpp +++ b/src/io/assets_android.cpp @@ -368,7 +368,14 @@ bool AssetsAndroid::extractDir(std::string dir_name) return true; } - if (!m_file_manager->checkAndCreateDirectoryP(output_dir)) + bool dir_created = m_file_manager->checkAndCreateDirectory(output_dir); + + if (!dir_created) + { + dir_created = m_file_manager->checkAndCreateDirectoryP(output_dir); + } + + if (!dir_created) { Log::warn("AssetsAndroid", "Couldn't create %s directory", output_dir.c_str()); @@ -653,4 +660,4 @@ std::string AssetsAndroid::getLibPath() #endif return ""; -} \ No newline at end of file +} diff --git a/src/io/file_manager.cpp b/src/io/file_manager.cpp index a9ea75763..03de607a0 100644 --- a/src/io/file_manager.cpp +++ b/src/io/file_manager.cpp @@ -816,16 +816,14 @@ bool FileManager::checkAndCreateDirectoryP(const std::string &path) for (unsigned int i=0; iexistFile(io::path(current_path.c_str()))) + //Log::verbose("[FileManager]", "Checking for: '%s", + // current_path.c_str()); + + if (!checkAndCreateDirectory(current_path)) { - if (!checkAndCreateDirectory(current_path)) - { - Log::error("[FileManager]", "Can't create dir '%s'", - current_path.c_str()); - break; - } + Log::error("[FileManager]", "Can't create dir '%s'", + current_path.c_str()); + break; } } bool error = checkAndCreateDirectory(path); diff --git a/src/io/file_manager.hpp b/src/io/file_manager.hpp index db280d769..49a18291c 100644 --- a/src/io/file_manager.hpp +++ b/src/io/file_manager.hpp @@ -117,7 +117,6 @@ private: const; void makePath(std::string& path, const std::string& dir, const std::string& fname) const; - bool checkAndCreateDirectory(const std::string &path); io::path createAbsoluteFilename(const std::string &f); void checkAndCreateConfigDir(); void checkAndCreateAddonsDir(); @@ -148,6 +147,7 @@ public: std::string getReplayDir() const; std::string getCachedTexturesDir() const; std::string getGPDir() const; + bool checkAndCreateDirectory(const std::string &path); bool checkAndCreateDirectoryP(const std::string &path); const std::string &getAddonsDir() const; std::string getAddonsFile(const std::string &name);