citra: Shutdown cleanly if ROM load fails

This commit is contained in:
MerryMage 2016-03-15 02:59:14 +00:00
parent 62b105b695
commit 317e795d35
1 changed files with 6 additions and 8 deletions

View File

@ -19,6 +19,8 @@
#include "common/logging/log.h" #include "common/logging/log.h"
#include "common/logging/backend.h" #include "common/logging/backend.h"
#include "common/logging/filter.h" #include "common/logging/filter.h"
#include "common/make_unique.h"
#include "common/scope_exit.h"
#include "core/settings.h" #include "core/settings.h"
#include "core/system.h" #include "core/system.h"
@ -64,6 +66,7 @@ int main(int argc, char **argv) {
Log::SetFilter(&log_filter); Log::SetFilter(&log_filter);
MicroProfileOnThreadCreate("EmuThread"); MicroProfileOnThreadCreate("EmuThread");
SCOPE_EXIT({ MicroProfileShutdown(); });
if (boot_filename.empty()) { if (boot_filename.empty()) {
LOG_CRITICAL(Frontend, "Failed to load ROM: No ROM specified"); LOG_CRITICAL(Frontend, "Failed to load ROM: No ROM specified");
@ -76,12 +79,13 @@ int main(int argc, char **argv) {
GDBStub::ToggleServer(Settings::values.use_gdbstub); GDBStub::ToggleServer(Settings::values.use_gdbstub);
GDBStub::SetServerPort(static_cast<u32>(Settings::values.gdbstub_port)); GDBStub::SetServerPort(static_cast<u32>(Settings::values.gdbstub_port));
EmuWindow_SDL2* emu_window = new EmuWindow_SDL2; std::unique_ptr<EmuWindow_SDL2> emu_window = Common::make_unique<EmuWindow_SDL2>();
VideoCore::g_hw_renderer_enabled = Settings::values.use_hw_renderer; VideoCore::g_hw_renderer_enabled = Settings::values.use_hw_renderer;
VideoCore::g_shader_jit_enabled = Settings::values.use_shader_jit; VideoCore::g_shader_jit_enabled = Settings::values.use_shader_jit;
System::Init(emu_window); System::Init(emu_window.get());
SCOPE_EXIT({ System::Shutdown(); });
Loader::ResultStatus load_result = Loader::LoadFile(boot_filename); Loader::ResultStatus load_result = Loader::LoadFile(boot_filename);
if (Loader::ResultStatus::Success != load_result) { if (Loader::ResultStatus::Success != load_result) {
@ -93,11 +97,5 @@ int main(int argc, char **argv) {
Core::RunLoop(); Core::RunLoop();
} }
System::Shutdown();
delete emu_window;
MicroProfileShutdown();
return 0; return 0;
} }