From 812f23d05c77fb10407546c3e7a95447fcbea395 Mon Sep 17 00:00:00 2001 From: Liam Date: Wed, 14 Feb 2024 23:44:05 -0500 Subject: vi: manage resources independently of nvnflinger and refactor --- src/core/core.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'src/core/core.cpp') diff --git a/src/core/core.cpp b/src/core/core.cpp index 60e2efddc..9e8936728 100644 --- a/src/core/core.cpp +++ b/src/core/core.cpp @@ -47,6 +47,7 @@ #include "core/hle/service/psc/time/system_clock.h" #include "core/hle/service/psc/time/time_zone_service.h" #include "core/hle/service/service.h" +#include "core/hle/service/services.h" #include "core/hle/service/set/system_settings_server.h" #include "core/hle/service/sm/sm.h" #include "core/internal_network/network.h" @@ -310,7 +311,8 @@ struct System::Impl { audio_core = std::make_unique(system); service_manager = std::make_shared(kernel); - services = std::make_unique(service_manager, system); + services = + std::make_unique(service_manager, system, stop_event.get_token()); is_powered_on = true; exit_locked = false; @@ -458,6 +460,7 @@ struct System::Impl { gpu_core->NotifyShutdown(); } + stop_event.request_stop(); core_timing.SyncPause(false); Network::CancelPendingSocketOperations(); kernel.SuspendEmulation(true); @@ -478,6 +481,7 @@ struct System::Impl { cpu_manager.Shutdown(); debugger.reset(); kernel.Shutdown(); + stop_event = {}; Network::RestartSocketOperations(); if (auto room_member = room_network.GetRoomMember().lock()) { @@ -613,6 +617,7 @@ struct System::Impl { ExecuteProgramCallback execute_program_callback; ExitCallback exit_callback; + std::stop_source stop_event; std::array dynarmic_ticks{}; std::array microprofile_cpu{}; -- cgit v1.2.3