From 7791cc8c2e585dcc377e22a26f548db914250a5d Mon Sep 17 00:00:00 2001 From: bunnei Date: Tue, 24 Nov 2020 14:31:58 -0800 Subject: hle: services: Fix a crash with improper NVFlinger lifetime management. (#4977) * hle: services: Fix a crash with improper NVFlinger lifetime management. - This crash would happen when attempting to shutdown yuzu early on in boot. --- src/core/core.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'src/core/core.cpp') diff --git a/src/core/core.cpp b/src/core/core.cpp index 5accdc783..1aa477a29 100644 --- a/src/core/core.cpp +++ b/src/core/core.cpp @@ -187,7 +187,7 @@ struct System::Impl { service_manager = std::make_shared(kernel); - Service::Init(service_manager, system); + services = std::make_unique(service_manager, system); GDBStub::DeferStart(); interrupt_manager = std::make_unique(system); @@ -296,7 +296,7 @@ struct System::Impl { // Shutdown emulation session GDBStub::Shutdown(); - Service::Shutdown(); + services.reset(); service_manager.reset(); cheat_engine.reset(); telemetry_session.reset(); @@ -306,8 +306,8 @@ struct System::Impl { cpu_manager.Shutdown(); // Shutdown kernel and core timing - kernel.Shutdown(); core_timing.Shutdown(); + kernel.Shutdown(); // Close app loader app_loader.reset(); @@ -398,6 +398,9 @@ struct System::Impl { /// Service manager std::shared_ptr service_manager; + /// Services + std::unique_ptr services; + /// Telemetry session for this emulation session std::unique_ptr telemetry_session; -- cgit v1.2.3