diff options
author | bunnei <bunneidev@gmail.com> | 2021-08-23 05:40:18 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-08-23 05:40:18 +0200 |
commit | f65f8b909773ba79f54423c7d5d5eb1653cb7733 (patch) | |
tree | 3e851ea4e3bf6a353dba89029ab087709d33e366 /src/core | |
parent | Merge pull request #6904 from Morph1984/lang-settings-range (diff) | |
parent | logging: Simplify and make thread-safe (diff) | |
download | yuzu-f65f8b909773ba79f54423c7d5d5eb1653cb7733.tar yuzu-f65f8b909773ba79f54423c7d5d5eb1653cb7733.tar.gz yuzu-f65f8b909773ba79f54423c7d5d5eb1653cb7733.tar.bz2 yuzu-f65f8b909773ba79f54423c7d5d5eb1653cb7733.tar.lz yuzu-f65f8b909773ba79f54423c7d5d5eb1653cb7733.tar.xz yuzu-f65f8b909773ba79f54423c7d5d5eb1653cb7733.tar.zst yuzu-f65f8b909773ba79f54423c7d5d5eb1653cb7733.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 5d8a61b3a..b0dc594d4 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 cd9af0c07..65b447a1c 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 @@ -393,7 +398,7 @@ private: struct Impl; std::unique_ptr<Impl> impl; - static System s_instance; + inline static std::unique_ptr<System> s_instance{}; }; } // namespace Core |