diff options
author | Narr the Reg <juangerman-13@hotmail.com> | 2024-02-19 06:36:53 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-02-19 06:36:53 +0100 |
commit | 8615509c4054f497fbd6ed9a7adee5a998597905 (patch) | |
tree | 293bff8e944c2ca632524e39bbfba33d6475af16 /src/core/core.cpp | |
parent | Merge pull request #13048 from liamwhite/new-shell (diff) | |
parent | nvnflinger: check for layers before compose (diff) | |
download | yuzu-8615509c4054f497fbd6ed9a7adee5a998597905.tar yuzu-8615509c4054f497fbd6ed9a7adee5a998597905.tar.gz yuzu-8615509c4054f497fbd6ed9a7adee5a998597905.tar.bz2 yuzu-8615509c4054f497fbd6ed9a7adee5a998597905.tar.lz yuzu-8615509c4054f497fbd6ed9a7adee5a998597905.tar.xz yuzu-8615509c4054f497fbd6ed9a7adee5a998597905.tar.zst yuzu-8615509c4054f497fbd6ed9a7adee5a998597905.zip |
Diffstat (limited to '')
-rw-r--r-- | src/core/core.cpp | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/core/core.cpp b/src/core/core.cpp index bd5f11d53..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<AudioCore::AudioCore>(system); service_manager = std::make_shared<Service::SM::ServiceManager>(kernel); - services = std::make_unique<Service::Services>(service_manager, system); + services = + std::make_unique<Service::Services>(service_manager, system, stop_event.get_token()); is_powered_on = true; exit_locked = false; @@ -458,11 +460,10 @@ struct System::Impl { gpu_core->NotifyShutdown(); } + stop_event.request_stop(); + core_timing.SyncPause(false); Network::CancelPendingSocketOperations(); kernel.SuspendEmulation(true); - if (services) { - services->KillNVNFlinger(); - } kernel.CloseServices(); kernel.ShutdownCores(); applet_manager.Reset(); @@ -480,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()) { @@ -615,6 +617,7 @@ struct System::Impl { ExecuteProgramCallback execute_program_callback; ExitCallback exit_callback; + std::stop_source stop_event; std::array<u64, Core::Hardware::NUM_CPU_CORES> dynarmic_ticks{}; std::array<MicroProfileToken, Core::Hardware::NUM_CPU_CORES> microprofile_cpu{}; |