From 198b6c9bdd58d76303f75a8577303907967a143e Mon Sep 17 00:00:00 2001 From: bunnei Date: Fri, 4 Nov 2016 23:14:38 -0400 Subject: core: Consolidate top-level system state into a singleton. --- src/core/system.cpp | 61 +++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 48 insertions(+), 13 deletions(-) (limited to 'src/core/system.cpp') diff --git a/src/core/system.cpp b/src/core/system.cpp index a5f763805..fa8bd0317 100644 --- a/src/core/system.cpp +++ b/src/core/system.cpp @@ -13,33 +13,30 @@ #include "core/system.h" #include "video_core/video_core.h" -namespace System { +namespace Core { -static bool is_powered_on{false}; +/*static*/ System System::s_instance; -Result Init(EmuWindow* emu_window, u32 system_mode) { +System::ResultStatus System::Init(EmuWindow* emu_window, u32 system_mode) { Core::Init(); CoreTiming::Init(); Memory::Init(); HW::Init(); Kernel::Init(system_mode); HLE::Init(); - if (!VideoCore::Init(emu_window)) { - return Result::ErrorInitVideoCore; - } AudioCore::Init(); GDBStub::Init(); - is_powered_on = true; + if (!VideoCore::Init(emu_window)) { + return ResultStatus::ErrorVideoCore; + } - return Result::Success; -} + is_powered_on = true; -bool IsPoweredOn() { - return is_powered_on; + return ResultStatus::Success; } -void Shutdown() { +void System::Shutdown() { GDBStub::Shutdown(); AudioCore::Shutdown(); VideoCore::Shutdown(); @@ -52,4 +49,42 @@ void Shutdown() { is_powered_on = false; } -} // namespace +System::ResultStatus System::Load(EmuWindow* emu_window, const std::string& filepath) { + state.app_loader = Loader::GetLoader(filepath); + + if (!state.app_loader) { + LOG_CRITICAL(Frontend, "Failed to obtain loader for %s!", filepath.c_str()); + return ResultStatus::ErrorGetLoader; + } + + boost::optional system_mode{ state.app_loader->LoadKernelSystemMode() }; + if (!system_mode) { + LOG_CRITICAL(Frontend, "Failed to determine system mode!"); + return ResultStatus::ErrorSystemMode; + } + + ResultStatus init_result{ Init(emu_window, system_mode.get()) }; + if (init_result != ResultStatus::Success) { + LOG_CRITICAL(Frontend, "Failed to initialize system (Error %i)!", init_result); + System::Shutdown(); + return init_result; + } + + const Loader::ResultStatus load_result{ state.app_loader->Load() }; + if (Loader::ResultStatus::Success != load_result) { + LOG_CRITICAL(Frontend, "Failed to load ROM (Error %i)!", load_result); + System::Shutdown(); + + switch (load_result) { + case Loader::ResultStatus::ErrorEncrypted: + return ResultStatus::ErrorLoader_ErrorEncrypted; + case Loader::ResultStatus::ErrorInvalidFormat: + return ResultStatus::ErrorLoader_ErrorInvalidFormat; + default: + return ResultStatus::ErrorLoader; + } + } + return ResultStatus::Success; +} + +} // namespace Core -- cgit v1.2.3 From 232ef55c1a13552e5ba8b72d61d1d072f5851598 Mon Sep 17 00:00:00 2001 From: bunnei Date: Thu, 15 Dec 2016 19:01:48 -0500 Subject: core: Consolidate core and system state, remove system module & cleanups. --- src/core/system.cpp | 90 ----------------------------------------------------- 1 file changed, 90 deletions(-) delete mode 100644 src/core/system.cpp (limited to 'src/core/system.cpp') diff --git a/src/core/system.cpp b/src/core/system.cpp deleted file mode 100644 index fa8bd0317..000000000 --- a/src/core/system.cpp +++ /dev/null @@ -1,90 +0,0 @@ -// Copyright 2014 Citra Emulator Project -// Licensed under GPLv2 or any later version -// Refer to the license.txt file included. - -#include "audio_core/audio_core.h" -#include "core/core.h" -#include "core/core_timing.h" -#include "core/gdbstub/gdbstub.h" -#include "core/hle/hle.h" -#include "core/hle/kernel/kernel.h" -#include "core/hle/kernel/memory.h" -#include "core/hw/hw.h" -#include "core/system.h" -#include "video_core/video_core.h" - -namespace Core { - -/*static*/ System System::s_instance; - -System::ResultStatus System::Init(EmuWindow* emu_window, u32 system_mode) { - Core::Init(); - CoreTiming::Init(); - Memory::Init(); - HW::Init(); - Kernel::Init(system_mode); - HLE::Init(); - AudioCore::Init(); - GDBStub::Init(); - - if (!VideoCore::Init(emu_window)) { - return ResultStatus::ErrorVideoCore; - } - - is_powered_on = true; - - return ResultStatus::Success; -} - -void System::Shutdown() { - GDBStub::Shutdown(); - AudioCore::Shutdown(); - VideoCore::Shutdown(); - HLE::Shutdown(); - Kernel::Shutdown(); - HW::Shutdown(); - CoreTiming::Shutdown(); - Core::Shutdown(); - - is_powered_on = false; -} - -System::ResultStatus System::Load(EmuWindow* emu_window, const std::string& filepath) { - state.app_loader = Loader::GetLoader(filepath); - - if (!state.app_loader) { - LOG_CRITICAL(Frontend, "Failed to obtain loader for %s!", filepath.c_str()); - return ResultStatus::ErrorGetLoader; - } - - boost::optional system_mode{ state.app_loader->LoadKernelSystemMode() }; - if (!system_mode) { - LOG_CRITICAL(Frontend, "Failed to determine system mode!"); - return ResultStatus::ErrorSystemMode; - } - - ResultStatus init_result{ Init(emu_window, system_mode.get()) }; - if (init_result != ResultStatus::Success) { - LOG_CRITICAL(Frontend, "Failed to initialize system (Error %i)!", init_result); - System::Shutdown(); - return init_result; - } - - const Loader::ResultStatus load_result{ state.app_loader->Load() }; - if (Loader::ResultStatus::Success != load_result) { - LOG_CRITICAL(Frontend, "Failed to load ROM (Error %i)!", load_result); - System::Shutdown(); - - switch (load_result) { - case Loader::ResultStatus::ErrorEncrypted: - return ResultStatus::ErrorLoader_ErrorEncrypted; - case Loader::ResultStatus::ErrorInvalidFormat: - return ResultStatus::ErrorLoader_ErrorInvalidFormat; - default: - return ResultStatus::ErrorLoader; - } - } - return ResultStatus::Success; -} - -} // namespace Core -- cgit v1.2.3