summaryrefslogtreecommitdiffstats
path: root/src/core/core.cpp
diff options
context:
space:
mode:
authorNarr the Reg <juangerman-13@hotmail.com>2024-02-19 06:36:53 +0100
committerGitHub <noreply@github.com>2024-02-19 06:36:53 +0100
commit8615509c4054f497fbd6ed9a7adee5a998597905 (patch)
tree293bff8e944c2ca632524e39bbfba33d6475af16 /src/core/core.cpp
parentMerge pull request #13048 from liamwhite/new-shell (diff)
parentnvnflinger: check for layers before compose (diff)
downloadyuzu-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.cpp11
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{};