summaryrefslogtreecommitdiff
path: root/src/core/core.cpp
diff options
context:
space:
mode:
authorGravatar Liam2024-02-14 23:44:05 -0500
committerGravatar Liam2024-02-17 18:08:38 -0500
commit812f23d05c77fb10407546c3e7a95447fcbea395 (patch)
treebbfb035c35ccffb6dbe0995002c2937bd94edc2d /src/core/core.cpp
parentvi: move shared buffer management from nvnflinger (diff)
downloadyuzu-812f23d05c77fb10407546c3e7a95447fcbea395.tar.gz
yuzu-812f23d05c77fb10407546c3e7a95447fcbea395.tar.xz
yuzu-812f23d05c77fb10407546c3e7a95447fcbea395.zip
vi: manage resources independently of nvnflinger and refactor
Diffstat (limited to 'src/core/core.cpp')
-rw-r--r--src/core/core.cpp7
1 files changed, 6 insertions, 1 deletions
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 @@
47#include "core/hle/service/psc/time/system_clock.h" 47#include "core/hle/service/psc/time/system_clock.h"
48#include "core/hle/service/psc/time/time_zone_service.h" 48#include "core/hle/service/psc/time/time_zone_service.h"
49#include "core/hle/service/service.h" 49#include "core/hle/service/service.h"
50#include "core/hle/service/services.h"
50#include "core/hle/service/set/system_settings_server.h" 51#include "core/hle/service/set/system_settings_server.h"
51#include "core/hle/service/sm/sm.h" 52#include "core/hle/service/sm/sm.h"
52#include "core/internal_network/network.h" 53#include "core/internal_network/network.h"
@@ -310,7 +311,8 @@ struct System::Impl {
310 audio_core = std::make_unique<AudioCore::AudioCore>(system); 311 audio_core = std::make_unique<AudioCore::AudioCore>(system);
311 312
312 service_manager = std::make_shared<Service::SM::ServiceManager>(kernel); 313 service_manager = std::make_shared<Service::SM::ServiceManager>(kernel);
313 services = std::make_unique<Service::Services>(service_manager, system); 314 services =
315 std::make_unique<Service::Services>(service_manager, system, stop_event.get_token());
314 316
315 is_powered_on = true; 317 is_powered_on = true;
316 exit_locked = false; 318 exit_locked = false;
@@ -458,6 +460,7 @@ struct System::Impl {
458 gpu_core->NotifyShutdown(); 460 gpu_core->NotifyShutdown();
459 } 461 }
460 462
463 stop_event.request_stop();
461 core_timing.SyncPause(false); 464 core_timing.SyncPause(false);
462 Network::CancelPendingSocketOperations(); 465 Network::CancelPendingSocketOperations();
463 kernel.SuspendEmulation(true); 466 kernel.SuspendEmulation(true);
@@ -478,6 +481,7 @@ struct System::Impl {
478 cpu_manager.Shutdown(); 481 cpu_manager.Shutdown();
479 debugger.reset(); 482 debugger.reset();
480 kernel.Shutdown(); 483 kernel.Shutdown();
484 stop_event = {};
481 Network::RestartSocketOperations(); 485 Network::RestartSocketOperations();
482 486
483 if (auto room_member = room_network.GetRoomMember().lock()) { 487 if (auto room_member = room_network.GetRoomMember().lock()) {
@@ -613,6 +617,7 @@ struct System::Impl {
613 617
614 ExecuteProgramCallback execute_program_callback; 618 ExecuteProgramCallback execute_program_callback;
615 ExitCallback exit_callback; 619 ExitCallback exit_callback;
620 std::stop_source stop_event;
616 621
617 std::array<u64, Core::Hardware::NUM_CPU_CORES> dynarmic_ticks{}; 622 std::array<u64, Core::Hardware::NUM_CPU_CORES> dynarmic_ticks{};
618 std::array<MicroProfileToken, Core::Hardware::NUM_CPU_CORES> microprofile_cpu{}; 623 std::array<MicroProfileToken, Core::Hardware::NUM_CPU_CORES> microprofile_cpu{};