summaryrefslogtreecommitdiff
path: root/src/core/hle/service/service.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/hle/service/service.cpp')
-rw-r--r--src/core/hle/service/service.cpp20
1 files changed, 5 insertions, 15 deletions
diff --git a/src/core/hle/service/service.cpp b/src/core/hle/service/service.cpp
index fbdf217ba..0718df981 100644
--- a/src/core/hle/service/service.cpp
+++ b/src/core/hle/service/service.cpp
@@ -49,7 +49,6 @@
49#include "core/hle/service/npns/npns.h" 49#include "core/hle/service/npns/npns.h"
50#include "core/hle/service/ns/ns.h" 50#include "core/hle/service/ns/ns.h"
51#include "core/hle/service/nvdrv/nvdrv.h" 51#include "core/hle/service/nvdrv/nvdrv.h"
52#include "core/hle/service/nvnflinger/hos_binder_driver_server.h"
53#include "core/hle/service/nvnflinger/nvnflinger.h" 52#include "core/hle/service/nvnflinger/nvnflinger.h"
54#include "core/hle/service/olsc/olsc.h" 53#include "core/hle/service/olsc/olsc.h"
55#include "core/hle/service/omm/omm.h" 54#include "core/hle/service/omm/omm.h"
@@ -210,14 +209,9 @@ Result ServiceFrameworkBase::HandleSyncRequest(Kernel::KServerSession& session,
210} 209}
211 210
212/// Initialize Services 211/// Initialize Services
213Services::Services(std::shared_ptr<SM::ServiceManager>& sm, Core::System& system) 212Services::Services(std::shared_ptr<SM::ServiceManager>& sm, Core::System& system) {
214 : hos_binder_driver_server{std::make_unique<Nvnflinger::HosBinderDriverServer>(system)},
215 nv_flinger{std::make_unique<Nvnflinger::Nvnflinger>(system, *hos_binder_driver_server)} {
216
217 auto& kernel = system.Kernel(); 213 auto& kernel = system.Kernel();
218 214
219 // Nvnflinger needs to be accessed by several services like Vi and AppletOE so we instantiate it
220 // here and pass it into the respective InstallInterfaces functions.
221 system.GetFileSystemController().CreateFactories(*system.GetFilesystem(), false); 215 system.GetFileSystemController().CreateFactories(*system.GetFilesystem(), false);
222 216
223 // clang-format off 217 // clang-format off
@@ -226,13 +220,14 @@ Services::Services(std::shared_ptr<SM::ServiceManager>& sm, Core::System& system
226 kernel.RunOnHostCoreProcess("jit", [&] { JIT::LoopProcess(system); }).detach(); 220 kernel.RunOnHostCoreProcess("jit", [&] { JIT::LoopProcess(system); }).detach();
227 kernel.RunOnHostCoreProcess("ldn", [&] { LDN::LoopProcess(system); }).detach(); 221 kernel.RunOnHostCoreProcess("ldn", [&] { LDN::LoopProcess(system); }).detach();
228 kernel.RunOnHostCoreProcess("Loader", [&] { LDR::LoopProcess(system); }).detach(); 222 kernel.RunOnHostCoreProcess("Loader", [&] { LDR::LoopProcess(system); }).detach();
229 kernel.RunOnHostCoreProcess("nvservices", [&] { Nvidia::LoopProcess(*nv_flinger, system); }).detach(); 223 kernel.RunOnHostCoreProcess("nvservices", [&] { Nvidia::LoopProcess(system); }).detach();
230 kernel.RunOnHostCoreProcess("bsdsocket", [&] { Sockets::LoopProcess(system); }).detach(); 224 kernel.RunOnHostCoreProcess("bsdsocket", [&] { Sockets::LoopProcess(system); }).detach();
231 kernel.RunOnHostCoreProcess("vi", [&] { VI::LoopProcess(system, *nv_flinger, *hos_binder_driver_server); }).detach(); 225 kernel.RunOnHostCoreProcess("vi", [&] { VI::LoopProcess(system); }).detach();
226 kernel.RunOnHostCoreProcess("nvnflinger", [&] { Nvnflinger::LoopProcess(system); }).detach();
232 227
233 kernel.RunOnGuestCoreProcess("sm", [&] { SM::LoopProcess(system); }); 228 kernel.RunOnGuestCoreProcess("sm", [&] { SM::LoopProcess(system); });
234 kernel.RunOnGuestCoreProcess("account", [&] { Account::LoopProcess(system); }); 229 kernel.RunOnGuestCoreProcess("account", [&] { Account::LoopProcess(system); });
235 kernel.RunOnGuestCoreProcess("am", [&] { AM::LoopProcess(*nv_flinger, system); }); 230 kernel.RunOnGuestCoreProcess("am", [&] { AM::LoopProcess(system); });
236 kernel.RunOnGuestCoreProcess("aoc", [&] { AOC::LoopProcess(system); }); 231 kernel.RunOnGuestCoreProcess("aoc", [&] { AOC::LoopProcess(system); });
237 kernel.RunOnGuestCoreProcess("apm", [&] { APM::LoopProcess(system); }); 232 kernel.RunOnGuestCoreProcess("apm", [&] { APM::LoopProcess(system); });
238 kernel.RunOnGuestCoreProcess("bcat", [&] { BCAT::LoopProcess(system); }); 233 kernel.RunOnGuestCoreProcess("bcat", [&] { BCAT::LoopProcess(system); });
@@ -246,7 +241,6 @@ Services::Services(std::shared_ptr<SM::ServiceManager>& sm, Core::System& system
246 kernel.RunOnGuestCoreProcess("fatal", [&] { Fatal::LoopProcess(system); }); 241 kernel.RunOnGuestCoreProcess("fatal", [&] { Fatal::LoopProcess(system); });
247 kernel.RunOnGuestCoreProcess("fgm", [&] { FGM::LoopProcess(system); }); 242 kernel.RunOnGuestCoreProcess("fgm", [&] { FGM::LoopProcess(system); });
248 kernel.RunOnGuestCoreProcess("friends", [&] { Friend::LoopProcess(system); }); 243 kernel.RunOnGuestCoreProcess("friends", [&] { Friend::LoopProcess(system); });
249 // glue depends on settings and psc, so they must come first
250 kernel.RunOnGuestCoreProcess("settings", [&] { Set::LoopProcess(system); }); 244 kernel.RunOnGuestCoreProcess("settings", [&] { Set::LoopProcess(system); });
251 kernel.RunOnGuestCoreProcess("psc", [&] { PSC::LoopProcess(system); }); 245 kernel.RunOnGuestCoreProcess("psc", [&] { PSC::LoopProcess(system); });
252 kernel.RunOnGuestCoreProcess("glue", [&] { Glue::LoopProcess(system); }); 246 kernel.RunOnGuestCoreProcess("glue", [&] { Glue::LoopProcess(system); });
@@ -283,8 +277,4 @@ Services::Services(std::shared_ptr<SM::ServiceManager>& sm, Core::System& system
283 277
284Services::~Services() = default; 278Services::~Services() = default;
285 279
286void Services::KillNVNFlinger() {
287 nv_flinger->ShutdownLayers();
288}
289
290} // namespace Service 280} // namespace Service