// Copyright 2020 Dolphin Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later #pragma once #include class SoundStream; namespace Core { // Central class that encapsulates the running system. class System { public: ~System(); System(const System&) = delete; System& operator=(const System&) = delete; System(System&&) = delete; System& operator=(System&&) = delete; // Intermediate instance accessor until global state is eliminated. static System& GetInstance() { static System instance; return instance; } void Initialize(); bool IsDualCoreMode() const { return m_separate_cpu_and_gpu_threads; } bool IsMMUMode() const { return m_mmu_enabled; } bool IsPauseOnPanicMode() const { return m_pause_on_panic_enabled; } SoundStream* GetSoundStream() const; void SetSoundStream(std::unique_ptr sound_stream); bool IsSoundStreamRunning() const; void SetSoundStreamRunning(bool running); bool IsAudioDumpStarted() const; void SetAudioDumpStarted(bool started); private: System(); struct Impl; std::unique_ptr m_impl; bool m_separate_cpu_and_gpu_threads = false; bool m_mmu_enabled = false; bool m_pause_on_panic_enabled = false; }; } // namespace Core