From 0e7eaaba5a170a935ca23e791f7b127646ff9464 Mon Sep 17 00:00:00 2001 From: Liam Date: Sun, 11 Jun 2023 23:53:23 -0400 Subject: vfs_real: lazily open files --- src/core/file_sys/vfs_real.cpp | 11 ++--------- src/core/file_sys/vfs_real.h | 3 +-- 2 files changed, 3 insertions(+), 11 deletions(-) diff --git a/src/core/file_sys/vfs_real.cpp b/src/core/file_sys/vfs_real.cpp index a63629b80..d16790b55 100644 --- a/src/core/file_sys/vfs_real.cpp +++ b/src/core/file_sys/vfs_real.cpp @@ -75,16 +75,9 @@ VfsEntryType RealVfsFilesystem::GetEntryType(std::string_view path_) const { VirtualFile RealVfsFilesystem::OpenFile(std::string_view path_, Mode perms) { const auto path = FS::SanitizePath(path_, FS::DirectorySeparator::PlatformDefault); - this->EvictSingleReference(); - - auto backing = FS::FileOpen(path, ModeFlagsToFileAccessMode(perms), FS::FileType::BinaryFile); - if (!backing) { - return nullptr; - } - - num_open_files++; - auto reference = std::make_unique(std::move(backing)); + auto reference = std::make_unique(); this->InsertReferenceIntoList(*reference); + return std::shared_ptr(new RealVfsFile(*this, std::move(reference), path, perms)); } diff --git a/src/core/file_sys/vfs_real.h b/src/core/file_sys/vfs_real.h index f29c69fbd..48dc2698a 100644 --- a/src/core/file_sys/vfs_real.h +++ b/src/core/file_sys/vfs_real.h @@ -15,8 +15,7 @@ class IOFile; namespace FileSys { struct FileReference : public Common::IntrusiveListBaseNode { - FileReference(std::shared_ptr&& f) : file(f) {} - std::shared_ptr file; + std::shared_ptr file{}; }; class RealVfsFile; -- cgit v1.2.3