diff options
author | liamwhite <liamwhite@users.noreply.github.com> | 2023-07-31 15:11:01 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-07-31 15:11:01 +0200 |
commit | e2623d64decdd39b3cfa92acd8d558a78309734e (patch) | |
tree | fa0bafeea6eab3dcc3c74cb4d584bb747d106851 /src | |
parent | Merge pull request #11182 from Moonlacer/revert-11163-revert-10946-amdBlending (diff) | |
parent | tz_content_man: Generate the time zone binary once (diff) | |
download | yuzu-e2623d64decdd39b3cfa92acd8d558a78309734e.tar yuzu-e2623d64decdd39b3cfa92acd8d558a78309734e.tar.gz yuzu-e2623d64decdd39b3cfa92acd8d558a78309734e.tar.bz2 yuzu-e2623d64decdd39b3cfa92acd8d558a78309734e.tar.lz yuzu-e2623d64decdd39b3cfa92acd8d558a78309734e.tar.xz yuzu-e2623d64decdd39b3cfa92acd8d558a78309734e.tar.zst yuzu-e2623d64decdd39b3cfa92acd8d558a78309734e.zip |
Diffstat (limited to 'src')
-rw-r--r-- | src/core/hle/service/time/time_zone_content_manager.cpp | 17 | ||||
-rw-r--r-- | src/core/hle/service/time/time_zone_content_manager.h | 2 |
2 files changed, 11 insertions, 8 deletions
diff --git a/src/core/hle/service/time/time_zone_content_manager.cpp b/src/core/hle/service/time/time_zone_content_manager.cpp index 5d60be67a..3b6047ad0 100644 --- a/src/core/hle/service/time/time_zone_content_manager.cpp +++ b/src/core/hle/service/time/time_zone_content_manager.cpp @@ -3,6 +3,7 @@ #include <chrono> #include <sstream> +#include <utility> #include "common/logging/log.h" #include "common/settings.h" @@ -46,14 +47,14 @@ static FileSys::VirtualDir GetTimeZoneBinary(Core::System& system) { return FileSys::ExtractRomFS(romfs); } -static std::vector<std::string> BuildLocationNameCache(Core::System& system) { - const FileSys::VirtualDir extracted_romfs{GetTimeZoneBinary(system)}; - if (!extracted_romfs) { +static std::vector<std::string> BuildLocationNameCache( + const FileSys::VirtualDir& time_zone_binary) { + if (!time_zone_binary) { LOG_ERROR(Service_Time, "Failed to extract RomFS for {:016X}!", time_zone_binary_titleid); return {}; } - const FileSys::VirtualFile binary_list{extracted_romfs->GetFile("binaryList.txt")}; + const FileSys::VirtualFile binary_list{time_zone_binary->GetFile("binaryList.txt")}; if (!binary_list) { LOG_ERROR(Service_Time, "{:016X} has no file binaryList.txt!", time_zone_binary_titleid); return {}; @@ -73,7 +74,8 @@ static std::vector<std::string> BuildLocationNameCache(Core::System& system) { } TimeZoneContentManager::TimeZoneContentManager(Core::System& system_) - : system{system_}, location_name_cache{BuildLocationNameCache(system)} {} + : system{system_}, time_zone_binary{GetTimeZoneBinary(system)}, + location_name_cache{BuildLocationNameCache(time_zone_binary)} {} void TimeZoneContentManager::Initialize(TimeManager& time_manager) { const auto timezone_setting = Settings::GetTimeZoneString(); @@ -111,13 +113,12 @@ Result TimeZoneContentManager::GetTimeZoneInfoFile(const std::string& location_n return ERROR_TIME_NOT_FOUND; } - const FileSys::VirtualDir extracted_romfs{GetTimeZoneBinary(system)}; - if (!extracted_romfs) { + if (!time_zone_binary) { LOG_ERROR(Service_Time, "Failed to extract RomFS for {:016X}!", time_zone_binary_titleid); return ERROR_TIME_NOT_FOUND; } - const FileSys::VirtualDir zoneinfo_dir{extracted_romfs->GetSubdirectory("zoneinfo")}; + const FileSys::VirtualDir zoneinfo_dir{time_zone_binary->GetSubdirectory("zoneinfo")}; if (!zoneinfo_dir) { LOG_ERROR(Service_Time, "{:016X} has no directory zoneinfo!", time_zone_binary_titleid); return ERROR_TIME_NOT_FOUND; diff --git a/src/core/hle/service/time/time_zone_content_manager.h b/src/core/hle/service/time/time_zone_content_manager.h index 3d94b6428..a6f9698bc 100644 --- a/src/core/hle/service/time/time_zone_content_manager.h +++ b/src/core/hle/service/time/time_zone_content_manager.h @@ -6,6 +6,7 @@ #include <string> #include <vector> +#include "core/file_sys/vfs_types.h" #include "core/hle/service/time/time_zone_manager.h" namespace Core { @@ -41,6 +42,7 @@ private: Core::System& system; TimeZoneManager time_zone_manager; + const FileSys::VirtualDir time_zone_binary; const std::vector<std::string> location_name_cache; }; |