diff options
Diffstat (limited to 'src/core')
| -rw-r--r-- | src/core/core.cpp | 9 | ||||
| -rw-r--r-- | src/core/core.h | 9 |
2 files changed, 14 insertions, 4 deletions
diff --git a/src/core/core.cpp b/src/core/core.cpp index d3e84c4ef..0d3c4182a 100644 --- a/src/core/core.cpp +++ b/src/core/core.cpp | |||
| @@ -84,8 +84,6 @@ FileSys::StorageId GetStorageIdForFrontendSlot( | |||
| 84 | 84 | ||
| 85 | } // Anonymous namespace | 85 | } // Anonymous namespace |
| 86 | 86 | ||
| 87 | /*static*/ System System::s_instance; | ||
| 88 | |||
| 89 | FileSys::VirtualFile GetGameFileFromPath(const FileSys::VirtualFilesystem& vfs, | 87 | FileSys::VirtualFile GetGameFileFromPath(const FileSys::VirtualFilesystem& vfs, |
| 90 | const std::string& path) { | 88 | const std::string& path) { |
| 91 | // To account for split 00+01+etc files. | 89 | // To account for split 00+01+etc files. |
| @@ -425,6 +423,13 @@ struct System::Impl { | |||
| 425 | System::System() : impl{std::make_unique<Impl>(*this)} {} | 423 | System::System() : impl{std::make_unique<Impl>(*this)} {} |
| 426 | System::~System() = default; | 424 | System::~System() = default; |
| 427 | 425 | ||
| 426 | void System::InitializeGlobalInstance() { | ||
| 427 | if (s_instance) { | ||
| 428 | abort(); | ||
| 429 | } | ||
| 430 | s_instance = std::unique_ptr<System>(new System); | ||
| 431 | } | ||
| 432 | |||
| 428 | CpuManager& System::GetCpuManager() { | 433 | CpuManager& System::GetCpuManager() { |
| 429 | return impl->cpu_manager; | 434 | return impl->cpu_manager; |
| 430 | } | 435 | } |
diff --git a/src/core/core.h b/src/core/core.h index ea143043c..85836f2f8 100644 --- a/src/core/core.h +++ b/src/core/core.h | |||
| @@ -121,9 +121,14 @@ public: | |||
| 121 | * @returns Reference to the instance of the System singleton class. | 121 | * @returns Reference to the instance of the System singleton class. |
| 122 | */ | 122 | */ |
| 123 | [[deprecated("Use of the global system instance is deprecated")]] static System& GetInstance() { | 123 | [[deprecated("Use of the global system instance is deprecated")]] static System& GetInstance() { |
| 124 | return s_instance; | 124 | if (!s_instance) { |
| 125 | abort(); | ||
| 126 | } | ||
| 127 | return *s_instance; | ||
| 125 | } | 128 | } |
| 126 | 129 | ||
| 130 | static void InitializeGlobalInstance(); | ||
| 131 | |||
| 127 | /// Enumeration representing the return values of the System Initialize and Load process. | 132 | /// Enumeration representing the return values of the System Initialize and Load process. |
| 128 | enum class ResultStatus : u32 { | 133 | enum class ResultStatus : u32 { |
| 129 | Success, ///< Succeeded | 134 | Success, ///< Succeeded |
| @@ -396,7 +401,7 @@ private: | |||
| 396 | struct Impl; | 401 | struct Impl; |
| 397 | std::unique_ptr<Impl> impl; | 402 | std::unique_ptr<Impl> impl; |
| 398 | 403 | ||
| 399 | static System s_instance; | 404 | inline static std::unique_ptr<System> s_instance{}; |
| 400 | }; | 405 | }; |
| 401 | 406 | ||
| 402 | } // namespace Core | 407 | } // namespace Core |