diff options
author | yzct12345 <87620833+yzct12345@users.noreply.github.com> | 2021-08-13 20:39:45 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-08-13 20:39:45 +0200 |
commit | 001675dced1b7b751d1db4f0d6490776c613df2f (patch) | |
tree | 151923c90c42bdcede2581ddf6b56768bfcafc01 /src/core | |
parent | Merge pull request #6862 from german77/badsdl (diff) | |
download | yuzu-001675dced1b7b751d1db4f0d6490776c613df2f.tar yuzu-001675dced1b7b751d1db4f0d6490776c613df2f.tar.gz yuzu-001675dced1b7b751d1db4f0d6490776c613df2f.tar.bz2 yuzu-001675dced1b7b751d1db4f0d6490776c613df2f.tar.lz yuzu-001675dced1b7b751d1db4f0d6490776c613df2f.tar.xz yuzu-001675dced1b7b751d1db4f0d6490776c613df2f.tar.zst yuzu-001675dced1b7b751d1db4f0d6490776c613df2f.zip |
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( } // Anonymous namespace -/*static*/ System System::s_instance; - FileSys::VirtualFile GetGameFileFromPath(const FileSys::VirtualFilesystem& vfs, const std::string& path) { // To account for split 00+01+etc files. @@ -425,6 +423,13 @@ struct System::Impl { System::System() : impl{std::make_unique<Impl>(*this)} {} System::~System() = default; +void System::InitializeGlobalInstance() { + if (s_instance) { + abort(); + } + s_instance = std::unique_ptr<System>(new System); +} + CpuManager& System::GetCpuManager() { return impl->cpu_manager; } 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: * @returns Reference to the instance of the System singleton class. */ [[deprecated("Use of the global system instance is deprecated")]] static System& GetInstance() { - return s_instance; + if (!s_instance) { + abort(); + } + return *s_instance; } + static void InitializeGlobalInstance(); + /// Enumeration representing the return values of the System Initialize and Load process. enum class ResultStatus : u32 { Success, ///< Succeeded @@ -396,7 +401,7 @@ private: struct Impl; std::unique_ptr<Impl> impl; - static System s_instance; + inline static std::unique_ptr<System> s_instance{}; }; } // namespace Core |