forked from eden-emu/eden
		
	vfs_real: lazily open files
This commit is contained in:
		
							parent
							
								
									efaaa6e0bf
								
							
						
					
					
						commit
						729216e5d8
					
				
					 2 changed files with 3 additions and 11 deletions
				
			
		|  | @ -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<FileReference>(std::move(backing)); | ||||
|     auto reference = std::make_unique<FileReference>(); | ||||
|     this->InsertReferenceIntoList(*reference); | ||||
| 
 | ||||
|     return std::shared_ptr<RealVfsFile>(new RealVfsFile(*this, std::move(reference), path, perms)); | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -15,8 +15,7 @@ class IOFile; | |||
| namespace FileSys { | ||||
| 
 | ||||
| struct FileReference : public Common::IntrusiveListBaseNode<FileReference> { | ||||
|     FileReference(std::shared_ptr<Common::FS::IOFile>&& f) : file(f) {} | ||||
|     std::shared_ptr<Common::FS::IOFile> file; | ||||
|     std::shared_ptr<Common::FS::IOFile> file{}; | ||||
| }; | ||||
| 
 | ||||
| class RealVfsFile; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Liam
						Liam