diff options
| author | 2019-09-22 11:42:34 +1000 | |
|---|---|---|
| committer | 2019-09-22 11:42:34 +1000 | |
| commit | c9ccdfbeac21ddd74d3cc79e8ef2c8d82f3d4efd (patch) | |
| tree | e260125fd1ef6e8a29b255b967a447eeb1aeb204 /src/core/core.cpp | |
| parent | Merge pull request #2883 from ogniK5377/log-game (diff) | |
| parent | configure_debug: Move reporting option to logging (diff) | |
| download | yuzu-c9ccdfbeac21ddd74d3cc79e8ef2c8d82f3d4efd.tar.gz yuzu-c9ccdfbeac21ddd74d3cc79e8ef2c8d82f3d4efd.tar.xz yuzu-c9ccdfbeac21ddd74d3cc79e8ef2c8d82f3d4efd.zip | |
Merge pull request #2430 from DarkLordZach/fs-controller
core: Implement FileSystemController to deglobalize FS services
Diffstat (limited to 'src/core/core.cpp')
| -rw-r--r-- | src/core/core.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/core/core.cpp b/src/core/core.cpp index 9ab174de2..f22244cf7 100644 --- a/src/core/core.cpp +++ b/src/core/core.cpp | |||
| @@ -14,8 +14,13 @@ | |||
| 14 | #include "core/core_cpu.h" | 14 | #include "core/core_cpu.h" |
| 15 | #include "core/core_timing.h" | 15 | #include "core/core_timing.h" |
| 16 | #include "core/cpu_core_manager.h" | 16 | #include "core/cpu_core_manager.h" |
| 17 | #include "core/file_sys/bis_factory.h" | ||
| 18 | #include "core/file_sys/card_image.h" | ||
| 17 | #include "core/file_sys/mode.h" | 19 | #include "core/file_sys/mode.h" |
| 18 | #include "core/file_sys/registered_cache.h" | 20 | #include "core/file_sys/registered_cache.h" |
| 21 | #include "core/file_sys/romfs_factory.h" | ||
| 22 | #include "core/file_sys/savedata_factory.h" | ||
| 23 | #include "core/file_sys/sdmc_factory.h" | ||
| 19 | #include "core/file_sys/vfs_concat.h" | 24 | #include "core/file_sys/vfs_concat.h" |
| 20 | #include "core/file_sys/vfs_real.h" | 25 | #include "core/file_sys/vfs_real.h" |
| 21 | #include "core/gdbstub/gdbstub.h" | 26 | #include "core/gdbstub/gdbstub.h" |
| @@ -27,6 +32,7 @@ | |||
| 27 | #include "core/hle/kernel/thread.h" | 32 | #include "core/hle/kernel/thread.h" |
| 28 | #include "core/hle/service/am/applets/applets.h" | 33 | #include "core/hle/service/am/applets/applets.h" |
| 29 | #include "core/hle/service/apm/controller.h" | 34 | #include "core/hle/service/apm/controller.h" |
| 35 | #include "core/hle/service/filesystem/filesystem.h" | ||
| 30 | #include "core/hle/service/glue/manager.h" | 36 | #include "core/hle/service/glue/manager.h" |
| 31 | #include "core/hle/service/service.h" | 37 | #include "core/hle/service/service.h" |
| 32 | #include "core/hle/service/sm/sm.h" | 38 | #include "core/hle/service/sm/sm.h" |
| @@ -202,6 +208,15 @@ struct System::Impl { | |||
| 202 | main_process->Run(load_parameters->main_thread_priority, | 208 | main_process->Run(load_parameters->main_thread_priority, |
| 203 | load_parameters->main_thread_stack_size); | 209 | load_parameters->main_thread_stack_size); |
| 204 | 210 | ||
| 211 | if (Settings::values.gamecard_inserted) { | ||
| 212 | if (Settings::values.gamecard_current_game) { | ||
| 213 | fs_controller.SetGameCard(GetGameFileFromPath(virtual_filesystem, filepath)); | ||
| 214 | } else if (!Settings::values.gamecard_path.empty()) { | ||
| 215 | fs_controller.SetGameCard( | ||
| 216 | GetGameFileFromPath(virtual_filesystem, Settings::values.gamecard_path)); | ||
| 217 | } | ||
| 218 | } | ||
| 219 | |||
| 205 | u64 title_id{0}; | 220 | u64 title_id{0}; |
| 206 | if (app_loader->ReadProgramId(title_id) != Loader::ResultStatus::Success) { | 221 | if (app_loader->ReadProgramId(title_id) != Loader::ResultStatus::Success) { |
| 207 | LOG_ERROR(Core, "Failed to find title id for ROM (Error {})", | 222 | LOG_ERROR(Core, "Failed to find title id for ROM (Error {})", |
| @@ -304,6 +319,7 @@ struct System::Impl { | |||
| 304 | FileSys::VirtualFilesystem virtual_filesystem; | 319 | FileSys::VirtualFilesystem virtual_filesystem; |
| 305 | /// ContentProviderUnion instance | 320 | /// ContentProviderUnion instance |
| 306 | std::unique_ptr<FileSys::ContentProviderUnion> content_provider; | 321 | std::unique_ptr<FileSys::ContentProviderUnion> content_provider; |
| 322 | Service::FileSystem::FileSystemController fs_controller; | ||
| 307 | /// AppLoader used to load the current executing application | 323 | /// AppLoader used to load the current executing application |
| 308 | std::unique_ptr<Loader::AppLoader> app_loader; | 324 | std::unique_ptr<Loader::AppLoader> app_loader; |
| 309 | std::unique_ptr<VideoCore::RendererBase> renderer; | 325 | std::unique_ptr<VideoCore::RendererBase> renderer; |
| @@ -571,6 +587,14 @@ const FileSys::ContentProvider& System::GetContentProvider() const { | |||
| 571 | return *impl->content_provider; | 587 | return *impl->content_provider; |
| 572 | } | 588 | } |
| 573 | 589 | ||
| 590 | Service::FileSystem::FileSystemController& System::GetFileSystemController() { | ||
| 591 | return impl->fs_controller; | ||
| 592 | } | ||
| 593 | |||
| 594 | const Service::FileSystem::FileSystemController& System::GetFileSystemController() const { | ||
| 595 | return impl->fs_controller; | ||
| 596 | } | ||
| 597 | |||
| 574 | void System::RegisterContentProvider(FileSys::ContentProviderUnionSlot slot, | 598 | void System::RegisterContentProvider(FileSys::ContentProviderUnionSlot slot, |
| 575 | FileSys::ContentProvider* provider) { | 599 | FileSys::ContentProvider* provider) { |
| 576 | impl->content_provider->SetSlot(slot, provider); | 600 | impl->content_provider->SetSlot(slot, provider); |