Core: pass down Core::System reference to all services (#4272)

* Core: pass down Core::System reference to all services

This has to be done at once due to unified interface used by HLE/LLE switcher

* apt: eliminate Core::System::GetInstance

* gpu_gsp: eliminate Core::System::GetInstance in service

* hid: eliminate Core::System::GetInstance

* nwm: eliminate Core::System::GetInstance

* err_f: eliminate Core::System::GetInstance
This commit is contained in:
Weiyi Wang 2018-10-05 10:59:43 -04:00 committed by GitHub
parent 008242c5f3
commit b163502744
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
77 changed files with 329 additions and 111 deletions

View file

@ -194,7 +194,7 @@ System::ResultStatus System::Init(EmuWindow& emu_window, u32 system_mode) {
HW::Init(); HW::Init();
Kernel::Init(system_mode); Kernel::Init(system_mode);
Service::Init(service_manager); Service::Init(*this, service_manager);
GDBStub::Init(); GDBStub::Init();
ResultStatus result = VideoCore::Init(emu_window); ResultStatus result = VideoCore::Init(emu_window);

View file

@ -5,6 +5,7 @@
#include <vector> #include <vector>
#include "common/common_types.h" #include "common/common_types.h"
#include "common/logging/log.h" #include "common/logging/log.h"
#include "core/core.h"
#include "core/hle/ipc.h" #include "core/hle/ipc.h"
#include "core/hle/ipc_helpers.h" #include "core/hle/ipc_helpers.h"
#include "core/hle/kernel/event.h" #include "core/hle/kernel/event.h"
@ -171,7 +172,8 @@ void Module::Interface::SetClientVersion(Kernel::HLERequestContext& ctx) {
Module::Interface::Interface(std::shared_ptr<Module> ac, const char* name, u32 max_session) Module::Interface::Interface(std::shared_ptr<Module> ac, const char* name, u32 max_session)
: ServiceFramework(name, max_session), ac(std::move(ac)) {} : ServiceFramework(name, max_session), ac(std::move(ac)) {}
void InstallInterfaces(SM::ServiceManager& service_manager) { void InstallInterfaces(Core::System& system) {
auto& service_manager = system.ServiceManager();
auto ac = std::make_shared<Module>(); auto ac = std::make_shared<Module>();
std::make_shared<AC_I>(ac)->InstallAsService(service_manager); std::make_shared<AC_I>(ac)->InstallAsService(service_manager);
std::make_shared<AC_U>(ac)->InstallAsService(service_manager); std::make_shared<AC_U>(ac)->InstallAsService(service_manager);

View file

@ -9,6 +9,10 @@
#include "core/hle/kernel/kernel.h" #include "core/hle/kernel/kernel.h"
#include "core/hle/service/service.h" #include "core/hle/service/service.h"
namespace Core {
class System;
}
namespace Kernel { namespace Kernel {
class Event; class Event;
} }
@ -152,6 +156,6 @@ protected:
Kernel::SharedPtr<Kernel::Event> disconnect_event; Kernel::SharedPtr<Kernel::Event> disconnect_event;
}; };
void InstallInterfaces(SM::ServiceManager& service_manager); void InstallInterfaces(Core::System& system);
} // namespace Service::AC } // namespace Service::AC

View file

@ -2,6 +2,7 @@
// Licensed under GPLv2 or any later version // Licensed under GPLv2 or any later version
// Refer to the license.txt file included. // Refer to the license.txt file included.
#include "core/core.h"
#include "core/hle/service/act/act.h" #include "core/hle/service/act/act.h"
#include "core/hle/service/act/act_a.h" #include "core/hle/service/act/act_a.h"
#include "core/hle/service/act/act_u.h" #include "core/hle/service/act/act_u.h"
@ -13,7 +14,8 @@ Module::Interface::Interface(std::shared_ptr<Module> act, const char* name)
Module::Interface::~Interface() = default; Module::Interface::~Interface() = default;
void InstallInterfaces(SM::ServiceManager& service_manager) { void InstallInterfaces(Core::System& system) {
auto& service_manager = system.ServiceManager();
auto act = std::make_shared<Module>(); auto act = std::make_shared<Module>();
std::make_shared<ACT_A>(act)->InstallAsService(service_manager); std::make_shared<ACT_A>(act)->InstallAsService(service_manager);
std::make_shared<ACT_U>(act)->InstallAsService(service_manager); std::make_shared<ACT_U>(act)->InstallAsService(service_manager);

View file

@ -6,6 +6,10 @@
#include "core/hle/service/service.h" #include "core/hle/service/service.h"
namespace Core {
class System;
}
namespace Service::ACT { namespace Service::ACT {
/// Initializes all ACT services /// Initializes all ACT services
@ -21,6 +25,6 @@ public:
}; };
}; };
void InstallInterfaces(SM::ServiceManager& service_manager); void InstallInterfaces(Core::System& system);
} // namespace Service::ACT } // namespace Service::ACT

View file

@ -12,6 +12,7 @@
#include "common/file_util.h" #include "common/file_util.h"
#include "common/logging/log.h" #include "common/logging/log.h"
#include "common/string_util.h" #include "common/string_util.h"
#include "core/core.h"
#include "core/file_sys/errors.h" #include "core/file_sys/errors.h"
#include "core/file_sys/ncch_container.h" #include "core/file_sys/ncch_container.h"
#include "core/file_sys/title_metadata.h" #include "core/file_sys/title_metadata.h"
@ -1462,7 +1463,8 @@ Module::Module() {
Module::~Module() = default; Module::~Module() = default;
void InstallInterfaces(SM::ServiceManager& service_manager) { void InstallInterfaces(Core::System& system) {
auto& service_manager = system.ServiceManager();
auto am = std::make_shared<Module>(); auto am = std::make_shared<Module>();
std::make_shared<AM_APP>(am)->InstallAsService(service_manager); std::make_shared<AM_APP>(am)->InstallAsService(service_manager);
std::make_shared<AM_NET>(am)->InstallAsService(service_manager); std::make_shared<AM_NET>(am)->InstallAsService(service_manager);

View file

@ -16,6 +16,10 @@
#include "core/hle/result.h" #include "core/hle/result.h"
#include "core/hle/service/service.h" #include "core/hle/service/service.h"
namespace Core {
class System;
}
namespace Service::FS { namespace Service::FS {
enum class MediaType : u32; enum class MediaType : u32;
} }
@ -574,6 +578,6 @@ private:
Kernel::SharedPtr<Kernel::Mutex> system_updater_mutex; Kernel::SharedPtr<Kernel::Mutex> system_updater_mutex;
}; };
void InstallInterfaces(SM::ServiceManager& service_manager); void InstallInterfaces(Core::System& system);
} // namespace Service::AM } // namespace Service::AM

View file

@ -182,7 +182,8 @@ void Module::Interface::GetSharedFont(Kernel::HLERequestContext& ctx) {
IPC::RequestBuilder rb = rp.MakeBuilder(2, 2); IPC::RequestBuilder rb = rp.MakeBuilder(2, 2);
// Log in telemetry if the game uses the shared font // Log in telemetry if the game uses the shared font
Core::Telemetry().AddField(Telemetry::FieldType::Session, "RequiresSharedFont", true); apt->system.TelemetrySession().AddField(Telemetry::FieldType::Session, "RequiresSharedFont",
true);
if (!apt->shared_font_loaded) { if (!apt->shared_font_loaded) {
// On real 3DS, font loading happens on booting. However, we load it on demand to coordinate // On real 3DS, font loading happens on booting. However, we load it on demand to coordinate
@ -197,8 +198,7 @@ void Module::Interface::GetSharedFont(Kernel::HLERequestContext& ctx) {
rb.Push<u32>(-1); // TODO: Find the right error code rb.Push<u32>(-1); // TODO: Find the right error code
rb.Push<u32>(0); rb.Push<u32>(0);
rb.PushCopyObjects<Kernel::Object>(nullptr); rb.PushCopyObjects<Kernel::Object>(nullptr);
Core::System::GetInstance().SetStatus(Core::System::ResultStatus::ErrorSystemFiles, apt->system.SetStatus(Core::System::ResultStatus::ErrorSystemFiles, "Shared fonts");
"Shared fonts");
return; return;
} }
} }
@ -544,7 +544,7 @@ void Module::Interface::CloseApplication(Kernel::HLERequestContext& ctx) {
LOG_DEBUG(Service_APT, "called"); LOG_DEBUG(Service_APT, "called");
Core::System::GetInstance().RequestShutdown(); apt->system.RequestShutdown();
IPC::RequestBuilder rb = rp.MakeBuilder(1, 0); IPC::RequestBuilder rb = rp.MakeBuilder(1, 0);
rb.Push(RESULT_SUCCESS); rb.Push(RESULT_SUCCESS);
@ -584,11 +584,11 @@ void Module::Interface::DoApplicationJump(Kernel::HLERequestContext& ctx) {
if (application_reset_prepared) { if (application_reset_prepared) {
// Reset system // Reset system
Core::System::GetInstance().RequestReset(); apt->system.RequestReset();
} else { } else {
// After the jump, the application should shutdown // After the jump, the application should shutdown
// TODO: Actually implement the jump // TODO: Actually implement the jump
Core::System::GetInstance().RequestShutdown(); apt->system.RequestShutdown();
} }
IPC::RequestBuilder rb = rp.MakeBuilder(1, 0); IPC::RequestBuilder rb = rp.MakeBuilder(1, 0);
@ -843,7 +843,7 @@ Module::Interface::Interface(std::shared_ptr<Module> apt, const char* name, u32
Module::Interface::~Interface() = default; Module::Interface::~Interface() = default;
Module::Module() { Module::Module(Core::System& system) : system(system) {
applet_manager = std::make_shared<AppletManager>(); applet_manager = std::make_shared<AppletManager>();
using Kernel::MemoryPermission; using Kernel::MemoryPermission;
@ -857,8 +857,9 @@ Module::Module() {
Module::~Module() {} Module::~Module() {}
void InstallInterfaces(SM::ServiceManager& service_manager) { void InstallInterfaces(Core::System& system) {
auto apt = std::make_shared<Module>(); auto& service_manager = system.ServiceManager();
auto apt = std::make_shared<Module>(system);
std::make_shared<APT_U>(apt)->InstallAsService(service_manager); std::make_shared<APT_U>(apt)->InstallAsService(service_manager);
std::make_shared<APT_S>(apt)->InstallAsService(service_manager); std::make_shared<APT_S>(apt)->InstallAsService(service_manager);
std::make_shared<APT_A>(apt)->InstallAsService(service_manager); std::make_shared<APT_A>(apt)->InstallAsService(service_manager);

View file

@ -11,6 +11,10 @@
#include "core/hle/kernel/kernel.h" #include "core/hle/kernel/kernel.h"
#include "core/hle/service/service.h" #include "core/hle/service/service.h"
namespace Core {
class System;
}
namespace Kernel { namespace Kernel {
class Mutex; class Mutex;
class SharedMemory; class SharedMemory;
@ -52,7 +56,7 @@ enum class ScreencapPostPermission : u32 {
class Module final { class Module final {
public: public:
Module(); explicit Module(Core::System& system);
~Module(); ~Module();
class Interface : public ServiceFramework<Interface> { class Interface : public ServiceFramework<Interface> {
@ -582,6 +586,8 @@ private:
bool LoadSharedFont(); bool LoadSharedFont();
bool LoadLegacySharedFont(); bool LoadLegacySharedFont();
Core::System& system;
/// Handle to shared memory region designated to for shared system font /// Handle to shared memory region designated to for shared system font
Kernel::SharedPtr<Kernel::SharedMemory> shared_font_mem; Kernel::SharedPtr<Kernel::SharedMemory> shared_font_mem;
bool shared_font_loaded = false; bool shared_font_loaded = false;
@ -602,6 +608,6 @@ private:
std::shared_ptr<AppletManager> applet_manager; std::shared_ptr<AppletManager> applet_manager;
}; };
void InstallInterfaces(SM::ServiceManager& service_manager); void InstallInterfaces(Core::System& system);
} // namespace Service::APT } // namespace Service::APT

View file

@ -3,6 +3,7 @@
// Refer to the license.txt file included. // Refer to the license.txt file included.
#include "common/logging/log.h" #include "common/logging/log.h"
#include "core/core.h"
#include "core/hle/ipc_helpers.h" #include "core/hle/ipc_helpers.h"
#include "core/hle/result.h" #include "core/hle/result.h"
#include "core/hle/service/boss/boss.h" #include "core/hle/service/boss/boss.h"
@ -908,7 +909,8 @@ Module::Module() {
task_finish_event = Event::Create(Kernel::ResetType::OneShot, "BOSS::task_finish_event"); task_finish_event = Event::Create(Kernel::ResetType::OneShot, "BOSS::task_finish_event");
} }
void InstallInterfaces(SM::ServiceManager& service_manager) { void InstallInterfaces(Core::System& system) {
auto& service_manager = system.ServiceManager();
auto boss = std::make_shared<Module>(); auto boss = std::make_shared<Module>();
std::make_shared<BOSS_P>(boss)->InstallAsService(service_manager); std::make_shared<BOSS_P>(boss)->InstallAsService(service_manager);
std::make_shared<BOSS_U>(boss)->InstallAsService(service_manager); std::make_shared<BOSS_U>(boss)->InstallAsService(service_manager);

View file

@ -7,6 +7,10 @@
#include "core/hle/kernel/event.h" #include "core/hle/kernel/event.h"
#include "core/hle/service/service.h" #include "core/hle/service/service.h"
namespace Core {
class System;
}
namespace Service::BOSS { namespace Service::BOSS {
class Module final { class Module final {
@ -960,6 +964,6 @@ private:
Kernel::SharedPtr<Kernel::Event> task_finish_event; Kernel::SharedPtr<Kernel::Event> task_finish_event;
}; };
void InstallInterfaces(SM::ServiceManager& service_manager); void InstallInterfaces(Core::System& system);
} // namespace Service::BOSS } // namespace Service::BOSS

View file

@ -5,6 +5,7 @@
#include <algorithm> #include <algorithm>
#include "common/bit_set.h" #include "common/bit_set.h"
#include "common/logging/log.h" #include "common/logging/log.h"
#include "core/core.h"
#include "core/core_timing.h" #include "core/core_timing.h"
#include "core/frontend/camera/factory.h" #include "core/frontend/camera/factory.h"
#include "core/hle/ipc.h" #include "core/hle/ipc.h"
@ -1054,7 +1055,8 @@ void ReloadCameraDevices() {
cam->ReloadCameraDevices(); cam->ReloadCameraDevices();
} }
void InstallInterfaces(SM::ServiceManager& service_manager) { void InstallInterfaces(Core::System& system) {
auto& service_manager = system.ServiceManager();
auto cam = std::make_shared<Module>(); auto cam = std::make_shared<Module>();
current_cam = cam; current_cam = cam;

View file

@ -13,6 +13,10 @@
#include "core/hle/result.h" #include "core/hle/result.h"
#include "core/hle/service/service.h" #include "core/hle/service/service.h"
namespace Core {
class System;
}
namespace Camera { namespace Camera {
class CameraInterface; class CameraInterface;
} }
@ -782,6 +786,6 @@ private:
/// Reload camera devices. Used when input configuration changed /// Reload camera devices. Used when input configuration changed
void ReloadCameraDevices(); void ReloadCameraDevices();
void InstallInterfaces(SM::ServiceManager& service_manager); void InstallInterfaces(Core::System& system);
} // namespace Service::CAM } // namespace Service::CAM

View file

@ -9,6 +9,7 @@
#include "common/file_util.h" #include "common/file_util.h"
#include "common/logging/log.h" #include "common/logging/log.h"
#include "common/string_util.h" #include "common/string_util.h"
#include "core/core.h"
#include "core/file_sys/archive_systemsavedata.h" #include "core/file_sys/archive_systemsavedata.h"
#include "core/file_sys/directory_backend.h" #include "core/file_sys/directory_backend.h"
#include "core/file_sys/errors.h" #include "core/file_sys/errors.h"
@ -1430,7 +1431,8 @@ Module::Module() {
Module::~Module() = default; Module::~Module() = default;
void InstallInterfaces(SM::ServiceManager& service_manager) { void InstallInterfaces(Core::System& system) {
auto& service_manager = system.ServiceManager();
auto cecd = std::make_shared<Module>(); auto cecd = std::make_shared<Module>();
std::make_shared<CECD_NDM>(cecd)->InstallAsService(service_manager); std::make_shared<CECD_NDM>(cecd)->InstallAsService(service_manager);
std::make_shared<CECD_S>(cecd)->InstallAsService(service_manager); std::make_shared<CECD_S>(cecd)->InstallAsService(service_manager);

View file

@ -15,6 +15,10 @@ class ArchiveBackend;
class FileBackend; class FileBackend;
} // namespace FileSys } // namespace FileSys
namespace Core {
class System;
}
namespace Service::CECD { namespace Service::CECD {
class Module final { class Module final {
@ -609,6 +613,6 @@ private:
}; };
/// Initialize CECD service(s) /// Initialize CECD service(s)
void InstallInterfaces(SM::ServiceManager& service_manager); void InstallInterfaces(Core::System& system);
} // namespace Service::CECD } // namespace Service::CECD

View file

@ -11,6 +11,7 @@
#include "common/logging/log.h" #include "common/logging/log.h"
#include "common/string_util.h" #include "common/string_util.h"
#include "common/swap.h" #include "common/swap.h"
#include "core/core.h"
#include "core/file_sys/archive_systemsavedata.h" #include "core/file_sys/archive_systemsavedata.h"
#include "core/file_sys/errors.h" #include "core/file_sys/errors.h"
#include "core/file_sys/file_backend.h" #include "core/file_sys/file_backend.h"
@ -721,7 +722,8 @@ u64 Module::GetConsoleUniqueId() {
return console_id_le; return console_id_le;
} }
void InstallInterfaces(SM::ServiceManager& service_manager) { void InstallInterfaces(Core::System& system) {
auto& service_manager = system.ServiceManager();
auto cfg = std::make_shared<Module>(); auto cfg = std::make_shared<Module>();
std::make_shared<CFG_I>(cfg)->InstallAsService(service_manager); std::make_shared<CFG_I>(cfg)->InstallAsService(service_manager);
std::make_shared<CFG_S>(cfg)->InstallAsService(service_manager); std::make_shared<CFG_S>(cfg)->InstallAsService(service_manager);

View file

@ -15,6 +15,10 @@ namespace FileSys {
class ArchiveBackend; class ArchiveBackend;
} }
namespace Core {
class System;
}
namespace Service::CFG { namespace Service::CFG {
enum SystemModel { enum SystemModel {
@ -407,7 +411,7 @@ private:
u32 preferred_region_code = 0; u32 preferred_region_code = 0;
}; };
void InstallInterfaces(SM::ServiceManager& service_manager); void InstallInterfaces(Core::System& system);
std::shared_ptr<Module> GetCurrentModule(); std::shared_ptr<Module> GetCurrentModule();
} // namespace Service::CFG } // namespace Service::CFG

View file

@ -3,6 +3,7 @@
// Refer to the license.txt file included. // Refer to the license.txt file included.
#include "common/alignment.h" #include "common/alignment.h"
#include "core/core.h"
#include "core/hle/ipc_helpers.h" #include "core/hle/ipc_helpers.h"
#include "core/hle/result.h" #include "core/hle/result.h"
#include "core/hle/service/csnd/csnd_snd.h" #include "core/hle/service/csnd/csnd_snd.h"
@ -193,7 +194,8 @@ CSND_SND::CSND_SND() : ServiceFramework("csnd:SND", 4) {
RegisterHandlers(functions); RegisterHandlers(functions);
}; };
void InstallInterfaces(SM::ServiceManager& service_manager) { void InstallInterfaces(Core::System& system) {
auto& service_manager = system.ServiceManager();
std::make_shared<CSND_SND>()->InstallAsService(service_manager); std::make_shared<CSND_SND>()->InstallAsService(service_manager);
} }

View file

@ -8,6 +8,10 @@
#include "core/hle/kernel/shared_memory.h" #include "core/hle/kernel/shared_memory.h"
#include "core/hle/service/service.h" #include "core/hle/service/service.h"
namespace Core {
class System;
}
namespace Service::CSND { namespace Service::CSND {
class CSND_SND final : public ServiceFramework<CSND_SND> { class CSND_SND final : public ServiceFramework<CSND_SND> {
@ -178,6 +182,6 @@ private:
}; };
/// Initializes the CSND_SND Service /// Initializes the CSND_SND Service
void InstallInterfaces(SM::ServiceManager& service_manager); void InstallInterfaces(Core::System& system);
} // namespace Service::CSND } // namespace Service::CSND

View file

@ -2,6 +2,7 @@
// Licensed under GPLv2 or any later version // Licensed under GPLv2 or any later version
// Refer to the license.txt file included. // Refer to the license.txt file included.
#include "core/core.h"
#include "core/hle/service/dlp/dlp.h" #include "core/hle/service/dlp/dlp.h"
#include "core/hle/service/dlp/dlp_clnt.h" #include "core/hle/service/dlp/dlp_clnt.h"
#include "core/hle/service/dlp/dlp_fkcl.h" #include "core/hle/service/dlp/dlp_fkcl.h"
@ -9,7 +10,8 @@
namespace Service::DLP { namespace Service::DLP {
void InstallInterfaces(SM::ServiceManager& service_manager) { void InstallInterfaces(Core::System& system) {
auto& service_manager = system.ServiceManager();
std::make_shared<DLP_CLNT>()->InstallAsService(service_manager); std::make_shared<DLP_CLNT>()->InstallAsService(service_manager);
std::make_shared<DLP_FKCL>()->InstallAsService(service_manager); std::make_shared<DLP_FKCL>()->InstallAsService(service_manager);
std::make_shared<DLP_SRVR>()->InstallAsService(service_manager); std::make_shared<DLP_SRVR>()->InstallAsService(service_manager);

View file

@ -6,9 +6,13 @@
#include "core/hle/service/service.h" #include "core/hle/service/service.h"
namespace Core {
class System;
}
namespace Service::DLP { namespace Service::DLP {
/// Initializes the DLP services. /// Initializes the DLP services.
void InstallInterfaces(SM::ServiceManager& service_manager); void InstallInterfaces(Core::System& system);
} // namespace Service::DLP } // namespace Service::DLP

View file

@ -399,7 +399,8 @@ DSP_DSP::~DSP_DSP() {
pipes = {}; pipes = {};
} }
void InstallInterfaces(SM::ServiceManager& service_manager) { void InstallInterfaces(Core::System& system) {
auto& service_manager = system.ServiceManager();
auto dsp = std::make_shared<DSP_DSP>(); auto dsp = std::make_shared<DSP_DSP>();
dsp->InstallAsService(service_manager); dsp->InstallAsService(service_manager);
Core::DSP().SetServiceToInterrupt(std::move(dsp)); Core::DSP().SetServiceToInterrupt(std::move(dsp));

View file

@ -9,6 +9,10 @@
#include "core/hle/result.h" #include "core/hle/result.h"
#include "core/hle/service/service.h" #include "core/hle/service/service.h"
namespace Core {
class System;
}
namespace Service::DSP { namespace Service::DSP {
class DSP_DSP final : public ServiceFramework<DSP_DSP> { class DSP_DSP final : public ServiceFramework<DSP_DSP> {
@ -250,6 +254,6 @@ private:
std::array<Kernel::SharedPtr<Kernel::Event>, AudioCore::num_dsp_pipe> pipes = {{}}; std::array<Kernel::SharedPtr<Kernel::Event>, AudioCore::num_dsp_pipe> pipes = {{}};
}; };
void InstallInterfaces(SM::ServiceManager& service_manager); void InstallInterfaces(Core::System& system);
} // namespace Service::DSP } // namespace Service::DSP

View file

@ -154,7 +154,7 @@ void ERR_F::ThrowFatalError(Kernel::HLERequestContext& ctx) {
LOG_CRITICAL(Service_ERR, "Fatal error"); LOG_CRITICAL(Service_ERR, "Fatal error");
const ErrInfo errinfo = rp.PopRaw<ErrInfo>(); const ErrInfo errinfo = rp.PopRaw<ErrInfo>();
LOG_CRITICAL(Service_ERR, "Fatal error type: {}", GetErrType(errinfo.errinfo_common.specifier)); LOG_CRITICAL(Service_ERR, "Fatal error type: {}", GetErrType(errinfo.errinfo_common.specifier));
Core::System::GetInstance().SetStatus(Core::System::ResultStatus::ErrorUnknown); system.SetStatus(Core::System::ResultStatus::ErrorUnknown);
// Generic Info // Generic Info
LogGenericInfo(errinfo.errinfo_common); LogGenericInfo(errinfo.errinfo_common);
@ -232,7 +232,7 @@ void ERR_F::ThrowFatalError(Kernel::HLERequestContext& ctx) {
rb.Push(RESULT_SUCCESS); rb.Push(RESULT_SUCCESS);
} }
ERR_F::ERR_F() : ServiceFramework("err:f", 1) { ERR_F::ERR_F(Core::System& system) : ServiceFramework("err:f", 1), system(system) {
static const FunctionInfo functions[] = { static const FunctionInfo functions[] = {
{0x00010800, &ERR_F::ThrowFatalError, "ThrowFatalError"}, {0x00010800, &ERR_F::ThrowFatalError, "ThrowFatalError"},
{0x00020042, nullptr, "SetUserString"}, {0x00020042, nullptr, "SetUserString"},
@ -242,8 +242,8 @@ ERR_F::ERR_F() : ServiceFramework("err:f", 1) {
ERR_F::~ERR_F() = default; ERR_F::~ERR_F() = default;
void InstallInterfaces() { void InstallInterfaces(Core::System& system) {
auto errf = std::make_shared<ERR_F>(); auto errf = std::make_shared<ERR_F>(system);
errf->InstallAsNamedPort(); errf->InstallAsNamedPort();
} }

View file

@ -6,6 +6,10 @@
#include "core/hle/service/service.h" #include "core/hle/service/service.h"
namespace Core {
class System;
}
namespace Kernel { namespace Kernel {
class HLERequestContext; class HLERequestContext;
} }
@ -15,7 +19,7 @@ namespace Service::ERR {
/// Interface to "err:f" service /// Interface to "err:f" service
class ERR_F final : public ServiceFramework<ERR_F> { class ERR_F final : public ServiceFramework<ERR_F> {
public: public:
ERR_F(); explicit ERR_F(Core::System& system);
~ERR_F(); ~ERR_F();
private: private:
@ -28,8 +32,10 @@ private:
* 1 : Result code * 1 : Result code
*/ */
void ThrowFatalError(Kernel::HLERequestContext& ctx); void ThrowFatalError(Kernel::HLERequestContext& ctx);
Core::System& system;
}; };
void InstallInterfaces(); void InstallInterfaces(Core::System& system);
} // namespace Service::ERR } // namespace Service::ERR

View file

@ -7,6 +7,7 @@
#include "common/assert.h" #include "common/assert.h"
#include "common/logging/log.h" #include "common/logging/log.h"
#include "common/string_util.h" #include "common/string_util.h"
#include "core/core.h"
#include "core/hle/ipc_helpers.h" #include "core/hle/ipc_helpers.h"
#include "core/hle/result.h" #include "core/hle/result.h"
#include "core/hle/service/frd/frd.h" #include "core/hle/service/frd/frd.h"
@ -149,7 +150,8 @@ void Module::Interface::SetClientSdkVersion(Kernel::HLERequestContext& ctx) {
Module::Module() = default; Module::Module() = default;
Module::~Module() = default; Module::~Module() = default;
void InstallInterfaces(SM::ServiceManager& service_manager) { void InstallInterfaces(Core::System& system) {
auto& service_manager = system.ServiceManager();
auto frd = std::make_shared<Module>(); auto frd = std::make_shared<Module>();
std::make_shared<FRD_U>(frd)->InstallAsService(service_manager); std::make_shared<FRD_U>(frd)->InstallAsService(service_manager);
std::make_shared<FRD_A>(frd)->InstallAsService(service_manager); std::make_shared<FRD_A>(frd)->InstallAsService(service_manager);

View file

@ -8,6 +8,10 @@
#include "common/common_types.h" #include "common/common_types.h"
#include "core/hle/service/service.h" #include "core/hle/service/service.h"
namespace Core {
class System;
}
namespace Service::FRD { namespace Service::FRD {
struct FriendKey { struct FriendKey {
@ -135,6 +139,6 @@ private:
MyPresence my_presence = {}; MyPresence my_presence = {};
}; };
void InstallInterfaces(SM::ServiceManager& service_manager); void InstallInterfaces(Core::System& system);
} // namespace Service::FRD } // namespace Service::FRD

View file

@ -853,7 +853,8 @@ FS_USER::FS_USER() : ServiceFramework("fs:USER", 30) {
RegisterHandlers(functions); RegisterHandlers(functions);
} }
void InstallInterfaces(SM::ServiceManager& service_manager) { void InstallInterfaces(Core::System& system) {
auto& service_manager = system.ServiceManager();
std::make_shared<FS_USER>()->InstallAsService(service_manager); std::make_shared<FS_USER>()->InstallAsService(service_manager);
} }
} // namespace Service::FS } // namespace Service::FS

View file

@ -7,6 +7,10 @@
#include "common/common_types.h" #include "common/common_types.h"
#include "core/hle/service/service.h" #include "core/hle/service/service.h"
namespace Core {
class System;
}
namespace Service::FS { namespace Service::FS {
class FS_USER final : public ServiceFramework<FS_USER> { class FS_USER final : public ServiceFramework<FS_USER> {
@ -517,6 +521,6 @@ private:
u32 priority = -1; ///< For SetPriority and GetPriority service functions u32 priority = -1; ///< For SetPriority and GetPriority service functions
}; };
void InstallInterfaces(SM::ServiceManager& service_manager); void InstallInterfaces(Core::System& system);
} // namespace Service::FS } // namespace Service::FS

View file

@ -3,6 +3,7 @@
// Refer to the license.txt file included. // Refer to the license.txt file included.
#include <vector> #include <vector>
#include "core/core.h"
#include "core/hle/kernel/event.h" #include "core/hle/kernel/event.h"
#include "core/hle/kernel/shared_memory.h" #include "core/hle/kernel/shared_memory.h"
#include "core/hle/service/gsp/gsp.h" #include "core/hle/service/gsp/gsp.h"
@ -23,8 +24,9 @@ void SignalInterrupt(InterruptId interrupt_id) {
return gpu->SignalInterrupt(interrupt_id); return gpu->SignalInterrupt(interrupt_id);
} }
void InstallInterfaces(SM::ServiceManager& service_manager) { void InstallInterfaces(Core::System& system) {
auto gpu = std::make_shared<GSP_GPU>(); auto& service_manager = system.ServiceManager();
auto gpu = std::make_shared<GSP_GPU>(system);
gpu->InstallAsService(service_manager); gpu->InstallAsService(service_manager);
gsp_gpu = gpu; gsp_gpu = gpu;

View file

@ -11,6 +11,10 @@
#include "core/hle/service/gsp/gsp_gpu.h" #include "core/hle/service/gsp/gsp_gpu.h"
#include "core/hle/service/gsp/gsp_lcd.h" #include "core/hle/service/gsp/gsp_lcd.h"
namespace Core {
class System;
}
namespace Service::GSP { namespace Service::GSP {
/** /**
* Retrieves the framebuffer info stored in the GSP shared memory for the * Retrieves the framebuffer info stored in the GSP shared memory for the
@ -27,5 +31,5 @@ FrameBufferUpdate* GetFrameBufferInfo(u32 thread_id, u32 screen_index);
*/ */
void SignalInterrupt(InterruptId interrupt_id); void SignalInterrupt(InterruptId interrupt_id);
void InstallInterfaces(SM::ServiceManager& service_manager); void InstallInterfaces(Core::System& system);
} // namespace Service::GSP } // namespace Service::GSP

View file

@ -731,7 +731,7 @@ void GSP_GPU::SetLedForceOff(Kernel::HLERequestContext& ctx) {
u8 state = rp.Pop<u8>(); u8 state = rp.Pop<u8>();
Core::System::GetInstance().GetSharedPageHandler()->Set3DLed(state); system.GetSharedPageHandler()->Set3DLed(state);
IPC::RequestBuilder rb = rp.MakeBuilder(1, 0); IPC::RequestBuilder rb = rp.MakeBuilder(1, 0);
rb.Push(RESULT_SUCCESS); rb.Push(RESULT_SUCCESS);
@ -749,7 +749,7 @@ SessionData* GSP_GPU::FindRegisteredThreadData(u32 thread_id) {
return nullptr; return nullptr;
} }
GSP_GPU::GSP_GPU() : ServiceFramework("gsp::Gpu", 2) { GSP_GPU::GSP_GPU(Core::System& system) : ServiceFramework("gsp::Gpu", 2), system(system) {
static const FunctionInfo functions[] = { static const FunctionInfo functions[] = {
{0x00010082, &GSP_GPU::WriteHWRegs, "WriteHWRegs"}, {0x00010082, &GSP_GPU::WriteHWRegs, "WriteHWRegs"},
{0x00020084, &GSP_GPU::WriteHWRegsWithMask, "WriteHWRegsWithMask"}, {0x00020084, &GSP_GPU::WriteHWRegsWithMask, "WriteHWRegsWithMask"},

View file

@ -13,6 +13,10 @@
#include "core/hle/result.h" #include "core/hle/result.h"
#include "core/hle/service/service.h" #include "core/hle/service/service.h"
namespace Core {
class System;
}
namespace Kernel { namespace Kernel {
class SharedMemory; class SharedMemory;
} // namespace Kernel } // namespace Kernel
@ -192,7 +196,7 @@ struct SessionData : public Kernel::SessionRequestHandler::SessionDataBase {
class GSP_GPU final : public ServiceFramework<GSP_GPU, SessionData> { class GSP_GPU final : public ServiceFramework<GSP_GPU, SessionData> {
public: public:
GSP_GPU(); explicit GSP_GPU(Core::System& system);
~GSP_GPU() = default; ~GSP_GPU() = default;
void ClientDisconnected(Kernel::SharedPtr<Kernel::ServerSession> server_session) override; void ClientDisconnected(Kernel::SharedPtr<Kernel::ServerSession> server_session) override;
@ -399,6 +403,8 @@ private:
/// Returns the session data for the specified registered thread id, or nullptr if not found. /// Returns the session data for the specified registered thread id, or nullptr if not found.
SessionData* FindRegisteredThreadData(u32 thread_id); SessionData* FindRegisteredThreadData(u32 thread_id);
Core::System& system;
/// GSP shared memory /// GSP shared memory
Kernel::SharedPtr<Kernel::SharedMemory> shared_memory; Kernel::SharedPtr<Kernel::SharedMemory> shared_memory;

View file

@ -219,7 +219,7 @@ void Module::UpdateGyroscopeCallback(u64 userdata, s64 cycles_late) {
Math::Vec3<float> gyro; Math::Vec3<float> gyro;
std::tie(std::ignore, gyro) = motion_device->GetStatus(); std::tie(std::ignore, gyro) = motion_device->GetStatus();
double stretch = Core::System::GetInstance().perf_stats.GetLastFrameTimeScale(); double stretch = system.perf_stats.GetLastFrameTimeScale();
gyro *= gyroscope_coef * static_cast<float>(stretch); gyro *= gyroscope_coef * static_cast<float>(stretch);
gyroscope_entry.x = static_cast<s16>(gyro.x); gyroscope_entry.x = static_cast<s16>(gyro.x);
gyroscope_entry.y = static_cast<s16>(gyro.y); gyroscope_entry.y = static_cast<s16>(gyro.y);
@ -354,7 +354,7 @@ void Module::Interface::GetSoundVolume(Kernel::HLERequestContext& ctx) {
Module::Interface::Interface(std::shared_ptr<Module> hid, const char* name, u32 max_session) Module::Interface::Interface(std::shared_ptr<Module> hid, const char* name, u32 max_session)
: ServiceFramework(name, max_session), hid(std::move(hid)) {} : ServiceFramework(name, max_session), hid(std::move(hid)) {}
Module::Module() { Module::Module(Core::System& system) : system(system) {
using namespace Kernel; using namespace Kernel;
shared_mem = shared_mem =
@ -393,8 +393,9 @@ void ReloadInputDevices() {
hid->ReloadInputDevices(); hid->ReloadInputDevices();
} }
void InstallInterfaces(SM::ServiceManager& service_manager) { void InstallInterfaces(Core::System& system) {
auto hid = std::make_shared<Module>(); auto& service_manager = system.ServiceManager();
auto hid = std::make_shared<Module>(system);
std::make_shared<User>(hid)->InstallAsService(service_manager); std::make_shared<User>(hid)->InstallAsService(service_manager);
std::make_shared<Spvr>(hid)->InstallAsService(service_manager); std::make_shared<Spvr>(hid)->InstallAsService(service_manager);
current_module = hid; current_module = hid;

View file

@ -18,6 +18,10 @@
#include "core/hle/service/service.h" #include "core/hle/service/service.h"
#include "core/settings.h" #include "core/settings.h"
namespace Core {
class System;
}
namespace Kernel { namespace Kernel {
class Event; class Event;
class SharedMemory; class SharedMemory;
@ -198,7 +202,7 @@ DirectionState GetStickDirectionState(s16 circle_pad_x, s16 circle_pad_y);
class Module final { class Module final {
public: public:
Module(); explicit Module(Core::System& system);
class Interface : public ServiceFramework<Interface> { class Interface : public ServiceFramework<Interface> {
public: public:
@ -299,6 +303,8 @@ private:
void UpdateAccelerometerCallback(u64 userdata, s64 cycles_late); void UpdateAccelerometerCallback(u64 userdata, s64 cycles_late);
void UpdateGyroscopeCallback(u64 userdata, s64 cycles_late); void UpdateGyroscopeCallback(u64 userdata, s64 cycles_late);
Core::System& system;
// Handle to shared memory region designated to HID_User service // Handle to shared memory region designated to HID_User service
Kernel::SharedPtr<Kernel::SharedMemory> shared_mem; Kernel::SharedPtr<Kernel::SharedMemory> shared_mem;
@ -329,7 +335,7 @@ private:
std::unique_ptr<Input::TouchDevice> touch_device; std::unique_ptr<Input::TouchDevice> touch_device;
}; };
void InstallInterfaces(SM::ServiceManager& service_manager); void InstallInterfaces(Core::System& system);
/// Reload input devices. Used when input configuration changed /// Reload input devices. Used when input configuration changed
void ReloadInputDevices(); void ReloadInputDevices();

View file

@ -4,6 +4,7 @@
#include <cryptopp/aes.h> #include <cryptopp/aes.h>
#include <cryptopp/modes.h> #include <cryptopp/modes.h>
#include "core/core.h"
#include "core/file_sys/archive_ncch.h" #include "core/file_sys/archive_ncch.h"
#include "core/file_sys/file_backend.h" #include "core/file_sys/file_backend.h"
#include "core/hle/ipc_helpers.h" #include "core/hle/ipc_helpers.h"
@ -581,7 +582,8 @@ HTTP_C::HTTP_C() : ServiceFramework("http:C", 32) {
DecryptClCertA(); DecryptClCertA();
} }
void InstallInterfaces(SM::ServiceManager& service_manager) { void InstallInterfaces(Core::System& system) {
auto& service_manager = system.ServiceManager();
std::make_shared<HTTP_C>()->InstallAsService(service_manager); std::make_shared<HTTP_C>()->InstallAsService(service_manager);
} }
} // namespace Service::HTTP } // namespace Service::HTTP

View file

@ -12,6 +12,10 @@
#include "core/hle/kernel/shared_memory.h" #include "core/hle/kernel/shared_memory.h"
#include "core/hle/service/service.h" #include "core/hle/service/service.h"
namespace Core {
class System;
}
namespace Service::HTTP { namespace Service::HTTP {
enum class RequestMethod : u8 { enum class RequestMethod : u8 {
@ -262,6 +266,6 @@ private:
} ClCertA; } ClCertA;
}; };
void InstallInterfaces(SM::ServiceManager& service_manager); void InstallInterfaces(Core::System& system);
} // namespace Service::HTTP } // namespace Service::HTTP

View file

@ -3,6 +3,7 @@
// Refer to the license.txt file included. // Refer to the license.txt file included.
#include <memory> #include <memory>
#include "core/core.h"
#include "core/hle/service/ir/ir.h" #include "core/hle/service/ir/ir.h"
#include "core/hle/service/ir/ir_rst.h" #include "core/hle/service/ir/ir_rst.h"
#include "core/hle/service/ir/ir_u.h" #include "core/hle/service/ir/ir_u.h"
@ -22,7 +23,8 @@ void ReloadInputDevices() {
ir_rst->ReloadInputDevices(); ir_rst->ReloadInputDevices();
} }
void InstallInterfaces(SM::ServiceManager& service_manager) { void InstallInterfaces(Core::System& system) {
auto& service_manager = system.ServiceManager();
std::make_shared<IR_U>()->InstallAsService(service_manager); std::make_shared<IR_U>()->InstallAsService(service_manager);
auto ir_user = std::make_shared<IR_USER>(); auto ir_user = std::make_shared<IR_USER>();

View file

@ -4,6 +4,10 @@
#pragma once #pragma once
namespace Core {
class System;
}
namespace SM { namespace SM {
class ServiceManager; class ServiceManager;
} }
@ -13,6 +17,6 @@ namespace Service::IR {
/// Reload input devices. Used when input configuration changed /// Reload input devices. Used when input configuration changed
void ReloadInputDevices(); void ReloadInputDevices();
void InstallInterfaces(SM::ServiceManager& service_manager); void InstallInterfaces(Core::System& system);
} // namespace Service::IR } // namespace Service::IR

View file

@ -586,7 +586,8 @@ RO::RO() : ServiceFramework("ldr:ro", 2) {
RegisterHandlers(functions); RegisterHandlers(functions);
} }
void InstallInterfaces(SM::ServiceManager& service_manager) { void InstallInterfaces(Core::System& system) {
auto& service_manager = system.ServiceManager();
std::make_shared<RO>()->InstallAsService(service_manager); std::make_shared<RO>()->InstallAsService(service_manager);
} }

View file

@ -7,6 +7,10 @@
#include "core/hle/service/ldr_ro/memory_synchronizer.h" #include "core/hle/service/ldr_ro/memory_synchronizer.h"
#include "core/hle/service/service.h" #include "core/hle/service/service.h"
namespace Core {
class System;
}
namespace Service::LDR { namespace Service::LDR {
struct ClientSlot : public Kernel::SessionRequestHandler::SessionDataBase { struct ClientSlot : public Kernel::SessionRequestHandler::SessionDataBase {
@ -149,6 +153,6 @@ private:
void Shutdown(Kernel::HLERequestContext& self); void Shutdown(Kernel::HLERequestContext& self);
}; };
void InstallInterfaces(SM::ServiceManager& service_manager); void InstallInterfaces(Core::System& system);
} // namespace Service::LDR } // namespace Service::LDR

View file

@ -3,6 +3,7 @@
// Refer to the license.txt file included. // Refer to the license.txt file included.
#include "common/logging/log.h" #include "common/logging/log.h"
#include "core/core.h"
#include "core/hle/ipc.h" #include "core/hle/ipc.h"
#include "core/hle/ipc_helpers.h" #include "core/hle/ipc_helpers.h"
#include "core/hle/kernel/event.h" #include "core/hle/kernel/event.h"
@ -290,7 +291,8 @@ MIC_U::MIC_U() : ServiceFramework{"mic:u", 1}, impl{std::make_unique<Impl>()} {
MIC_U::~MIC_U() = default; MIC_U::~MIC_U() = default;
void InstallInterfaces(SM::ServiceManager& service_manager) { void InstallInterfaces(Core::System& system) {
auto& service_manager = system.ServiceManager();
std::make_shared<MIC_U>()->InstallAsService(service_manager); std::make_shared<MIC_U>()->InstallAsService(service_manager);
} }

View file

@ -8,6 +8,10 @@
#include "core/hle/service/service.h" #include "core/hle/service/service.h"
namespace Core {
class System;
}
namespace Service::MIC { namespace Service::MIC {
class MIC_U final : public ServiceFramework<MIC_U> { class MIC_U final : public ServiceFramework<MIC_U> {
@ -186,6 +190,6 @@ private:
std::unique_ptr<Impl> impl; std::unique_ptr<Impl> impl;
}; };
void InstallInterfaces(SM::ServiceManager& service_manager); void InstallInterfaces(Core::System& system);
} // namespace Service::MIC } // namespace Service::MIC

View file

@ -2,12 +2,14 @@
// Licensed under GPLv2 or any later version // Licensed under GPLv2 or any later version
// Refer to the license.txt file included. // Refer to the license.txt file included.
#include "core/core.h"
#include "core/hle/service/mvd/mvd.h" #include "core/hle/service/mvd/mvd.h"
#include "core/hle/service/mvd/mvd_std.h" #include "core/hle/service/mvd/mvd_std.h"
namespace Service::MVD { namespace Service::MVD {
void InstallInterfaces(SM::ServiceManager& service_manager) { void InstallInterfaces(Core::System& system) {
auto& service_manager = system.ServiceManager();
std::make_shared<MVD_STD>()->InstallAsService(service_manager); std::make_shared<MVD_STD>()->InstallAsService(service_manager);
} }

View file

@ -6,9 +6,13 @@
#include "core/hle/service/service.h" #include "core/hle/service/service.h"
namespace Core {
class System;
}
namespace Service::MVD { namespace Service::MVD {
/// Initializes all MVD services. /// Initializes all MVD services.
void InstallInterfaces(SM::ServiceManager& service_manager); void InstallInterfaces(Core::System& system);
} // namespace Service::MVD } // namespace Service::MVD

View file

@ -2,6 +2,7 @@
// Licensed under GPLv2 or any later version // Licensed under GPLv2 or any later version
// Refer to the license.txt file included. // Refer to the license.txt file included.
#include "core/core.h"
#include "core/hle/ipc_helpers.h" #include "core/hle/ipc_helpers.h"
#include "core/hle/service/ndm/ndm_u.h" #include "core/hle/service/ndm/ndm_u.h"
@ -236,7 +237,8 @@ NDM_U::NDM_U() : ServiceFramework("ndm:u", 6) {
RegisterHandlers(functions); RegisterHandlers(functions);
} }
void InstallInterfaces(SM::ServiceManager& service_manager) { void InstallInterfaces(Core::System& system) {
auto& service_manager = system.ServiceManager();
std::make_shared<NDM_U>()->InstallAsService(service_manager); std::make_shared<NDM_U>()->InstallAsService(service_manager);
} }

View file

@ -7,6 +7,10 @@
#include <array> #include <array>
#include "core/hle/service/service.h" #include "core/hle/service/service.h"
namespace Core {
class System;
}
namespace Service::NDM { namespace Service::NDM {
class NDM_U final : public ServiceFramework<NDM_U> { class NDM_U final : public ServiceFramework<NDM_U> {
@ -268,6 +272,6 @@ private:
bool daemon_lock_enabled = false; bool daemon_lock_enabled = false;
}; };
void InstallInterfaces(SM::ServiceManager& service_manager); void InstallInterfaces(Core::System& system);
} // namespace Service::NDM } // namespace Service::NDM

View file

@ -3,13 +3,15 @@
// Refer to the license.txt file included. // Refer to the license.txt file included.
#include "common/logging/log.h" #include "common/logging/log.h"
#include "core/core.h"
#include "core/hle/service/news/news_s.h" #include "core/hle/service/news/news_s.h"
#include "core/hle/service/news/news_u.h" #include "core/hle/service/news/news_u.h"
#include "core/hle/service/service.h" #include "core/hle/service/service.h"
namespace Service::NEWS { namespace Service::NEWS {
void InstallInterfaces(SM::ServiceManager& service_manager) { void InstallInterfaces(Core::System& system) {
auto& service_manager = system.ServiceManager();
std::make_shared<NEWS_S>()->InstallAsService(service_manager); std::make_shared<NEWS_S>()->InstallAsService(service_manager);
std::make_shared<NEWS_U>()->InstallAsService(service_manager); std::make_shared<NEWS_U>()->InstallAsService(service_manager);
} }

View file

@ -4,8 +4,12 @@
#pragma once #pragma once
namespace Core {
class System;
}
namespace Service::NEWS { namespace Service::NEWS {
void InstallInterfaces(SM::ServiceManager& service_manager); void InstallInterfaces(Core::System& system);
} // namespace Service::NEWS } // namespace Service::NEWS

View file

@ -2,6 +2,7 @@
// Licensed under GPLv2 or any later version // Licensed under GPLv2 or any later version
// Refer to the license.txt file included. // Refer to the license.txt file included.
#include "core/core.h"
#include "core/hle/ipc_helpers.h" #include "core/hle/ipc_helpers.h"
#include "core/hle/kernel/event.h" #include "core/hle/kernel/event.h"
#include "core/hle/service/nfc/nfc.h" #include "core/hle/service/nfc/nfc.h"
@ -148,7 +149,8 @@ Module::Module() {
Module::~Module() = default; Module::~Module() = default;
void InstallInterfaces(SM::ServiceManager& service_manager) { void InstallInterfaces(Core::System& system) {
auto& service_manager = system.ServiceManager();
auto nfc = std::make_shared<Module>(); auto nfc = std::make_shared<Module>();
std::make_shared<NFC_M>(nfc)->InstallAsService(service_manager); std::make_shared<NFC_M>(nfc)->InstallAsService(service_manager);
std::make_shared<NFC_U>(nfc)->InstallAsService(service_manager); std::make_shared<NFC_U>(nfc)->InstallAsService(service_manager);

View file

@ -9,6 +9,10 @@
#include "core/hle/kernel/kernel.h" #include "core/hle/kernel/kernel.h"
#include "core/hle/service/service.h" #include "core/hle/service/service.h"
namespace Core {
class System;
}
namespace Kernel { namespace Kernel {
class Event; class Event;
} // namespace Kernel } // namespace Kernel
@ -174,6 +178,6 @@ private:
CommunicationStatus nfc_status = CommunicationStatus::NfcInitialized; CommunicationStatus nfc_status = CommunicationStatus::NfcInitialized;
}; };
void InstallInterfaces(SM::ServiceManager& service_manager); void InstallInterfaces(Core::System& system);
} // namespace Service::NFC } // namespace Service::NFC

View file

@ -2,6 +2,7 @@
// Licensed under GPLv2 or any later version // Licensed under GPLv2 or any later version
// Refer to the license.txt file included. // Refer to the license.txt file included.
#include "core/core.h"
#include "core/hle/service/nim/nim.h" #include "core/hle/service/nim/nim.h"
#include "core/hle/service/nim/nim_aoc.h" #include "core/hle/service/nim/nim_aoc.h"
#include "core/hle/service/nim/nim_s.h" #include "core/hle/service/nim/nim_s.h"
@ -9,7 +10,8 @@
namespace Service::NIM { namespace Service::NIM {
void InstallInterfaces(SM::ServiceManager& service_manager) { void InstallInterfaces(Core::System& system) {
auto& service_manager = system.ServiceManager();
std::make_shared<NIM_AOC>()->InstallAsService(service_manager); std::make_shared<NIM_AOC>()->InstallAsService(service_manager);
std::make_shared<NIM_S>()->InstallAsService(service_manager); std::make_shared<NIM_S>()->InstallAsService(service_manager);
std::make_shared<NIM_U>()->InstallAsService(service_manager); std::make_shared<NIM_U>()->InstallAsService(service_manager);

View file

@ -6,8 +6,12 @@
#include "core/hle/service/service.h" #include "core/hle/service/service.h"
namespace Core {
class System;
}
namespace Service::NIM { namespace Service::NIM {
void InstallInterfaces(SM::ServiceManager& service_manager); void InstallInterfaces(Core::System& system);
} // namespace Service::NIM } // namespace Service::NIM

View file

@ -3,6 +3,7 @@
// Refer to the license.txt file included. // Refer to the license.txt file included.
#include <cinttypes> #include <cinttypes>
#include "core/core.h"
#include "core/hle/service/am/am.h" #include "core/hle/service/am/am.h"
#include "core/hle/service/ns/ns.h" #include "core/hle/service/ns/ns.h"
#include "core/hle/service/ns/ns_s.h" #include "core/hle/service/ns/ns_s.h"
@ -30,7 +31,8 @@ Kernel::SharedPtr<Kernel::Process> LaunchTitle(FS::MediaType media_type, u64 tit
return process; return process;
} }
void InstallInterfaces(SM::ServiceManager& service_manager) { void InstallInterfaces(Core::System& system) {
auto& service_manager = system.ServiceManager();
std::make_shared<NS_S>()->InstallAsService(service_manager); std::make_shared<NS_S>()->InstallAsService(service_manager);
} }

View file

@ -8,12 +8,16 @@
#include "core/hle/service/fs/archive.h" #include "core/hle/service/fs/archive.h"
#include "core/hle/service/service.h" #include "core/hle/service/service.h"
namespace Core {
class System;
}
namespace Service::NS { namespace Service::NS {
/// Loads and launches the title identified by title_id in the specified media type. /// Loads and launches the title identified by title_id in the specified media type.
Kernel::SharedPtr<Kernel::Process> LaunchTitle(FS::MediaType media_type, u64 title_id); Kernel::SharedPtr<Kernel::Process> LaunchTitle(FS::MediaType media_type, u64 title_id);
/// Registers all NS services with the specified service manager. /// Registers all NS services with the specified service manager.
void InstallInterfaces(SM::ServiceManager& service_manager); void InstallInterfaces(Core::System& system);
} // namespace Service::NS } // namespace Service::NS

View file

@ -2,6 +2,7 @@
// Licensed under GPLv2 or any later version // Licensed under GPLv2 or any later version
// Refer to the license.txt file included. // Refer to the license.txt file included.
#include "core/core.h"
#include "core/hle/service/nwm/nwm.h" #include "core/hle/service/nwm/nwm.h"
#include "core/hle/service/nwm/nwm_cec.h" #include "core/hle/service/nwm/nwm_cec.h"
#include "core/hle/service/nwm/nwm_ext.h" #include "core/hle/service/nwm/nwm_ext.h"
@ -13,14 +14,15 @@
namespace Service::NWM { namespace Service::NWM {
void InstallInterfaces(SM::ServiceManager& service_manager) { void InstallInterfaces(Core::System& system) {
auto& service_manager = system.ServiceManager();
std::make_shared<NWM_CEC>()->InstallAsService(service_manager); std::make_shared<NWM_CEC>()->InstallAsService(service_manager);
std::make_shared<NWM_EXT>()->InstallAsService(service_manager); std::make_shared<NWM_EXT>()->InstallAsService(service_manager);
std::make_shared<NWM_INF>()->InstallAsService(service_manager); std::make_shared<NWM_INF>()->InstallAsService(service_manager);
std::make_shared<NWM_SAP>()->InstallAsService(service_manager); std::make_shared<NWM_SAP>()->InstallAsService(service_manager);
std::make_shared<NWM_SOC>()->InstallAsService(service_manager); std::make_shared<NWM_SOC>()->InstallAsService(service_manager);
std::make_shared<NWM_TST>()->InstallAsService(service_manager); std::make_shared<NWM_TST>()->InstallAsService(service_manager);
std::make_shared<NWM_UDS>()->InstallAsService(service_manager); std::make_shared<NWM_UDS>(system)->InstallAsService(service_manager);
} }
} // namespace Service::NWM } // namespace Service::NWM

View file

@ -6,9 +6,13 @@
#include "core/hle/service/service.h" #include "core/hle/service/service.h"
namespace Core {
class System;
}
namespace Service::NWM { namespace Service::NWM {
/// Initialize all NWM services /// Initialize all NWM services
void InstallInterfaces(SM::ServiceManager& service_manager); void InstallInterfaces(Core::System& system);
} // namespace Service::NWM } // namespace Service::NWM

View file

@ -1283,7 +1283,7 @@ static void BeaconBroadcastCallback(u64 userdata, s64 cycles_late) {
beacon_broadcast_event, 0); beacon_broadcast_event, 0);
} }
NWM_UDS::NWM_UDS() : ServiceFramework("nwm::UDS") { NWM_UDS::NWM_UDS(Core::System& system) : ServiceFramework("nwm::UDS") {
static const FunctionInfo functions[] = { static const FunctionInfo functions[] = {
{0x000102C2, nullptr, "Initialize (deprecated)"}, {0x000102C2, nullptr, "Initialize (deprecated)"},
{0x00020000, nullptr, "Scrap"}, {0x00020000, nullptr, "Scrap"},
@ -1334,9 +1334,8 @@ NWM_UDS::NWM_UDS() : ServiceFramework("nwm::UDS") {
} }
} }
Core::System::GetInstance().GetSharedPageHandler()->SetMacAddress(mac); system.GetSharedPageHandler()->SetMacAddress(mac);
Core::System::GetInstance().GetSharedPageHandler()->SetWifiLinkLevel( system.GetSharedPageHandler()->SetWifiLinkLevel(SharedPage::WifiLinkLevel::BEST);
SharedPage::WifiLinkLevel::BEST);
} }
NWM_UDS::~NWM_UDS() { NWM_UDS::~NWM_UDS() {

View file

@ -11,6 +11,10 @@
#include "common/swap.h" #include "common/swap.h"
#include "core/hle/service/service.h" #include "core/hle/service/service.h"
namespace Core {
class System;
}
// Local-WLAN service // Local-WLAN service
namespace Service::NWM { namespace Service::NWM {
@ -98,7 +102,7 @@ enum class TagId : u8 {
class NWM_UDS final : public ServiceFramework<NWM_UDS> { class NWM_UDS final : public ServiceFramework<NWM_UDS> {
public: public:
NWM_UDS(); explicit NWM_UDS(Core::System& system);
~NWM_UDS(); ~NWM_UDS();
private: private:

View file

@ -2,13 +2,15 @@
// Licensed under GPLv2 or any later version // Licensed under GPLv2 or any later version
// Refer to the license.txt file included. // Refer to the license.txt file included.
#include "core/core.h"
#include "core/hle/service/pm/pm.h" #include "core/hle/service/pm/pm.h"
#include "core/hle/service/pm/pm_app.h" #include "core/hle/service/pm/pm_app.h"
#include "core/hle/service/pm/pm_dbg.h" #include "core/hle/service/pm/pm_dbg.h"
namespace Service::PM { namespace Service::PM {
void InstallInterfaces(SM::ServiceManager& service_manager) { void InstallInterfaces(Core::System& system) {
auto& service_manager = system.ServiceManager();
std::make_shared<PM_APP>()->InstallAsService(service_manager); std::make_shared<PM_APP>()->InstallAsService(service_manager);
std::make_shared<PM_DBG>()->InstallAsService(service_manager); std::make_shared<PM_DBG>()->InstallAsService(service_manager);
} }

View file

@ -6,9 +6,13 @@
#include "core/hle/service/service.h" #include "core/hle/service/service.h"
namespace Core {
class System;
}
namespace Service::PM { namespace Service::PM {
/// Initializes the PM services. /// Initializes the PM services.
void InstallInterfaces(SM::ServiceManager& service_manager); void InstallInterfaces(Core::System& system);
} // namespace Service::PM } // namespace Service::PM

View file

@ -2,6 +2,7 @@
// Licensed under GPLv2 or any later version // Licensed under GPLv2 or any later version
// Refer to the license.txt file included. // Refer to the license.txt file included.
#include "core/core.h"
#include "core/hle/ipc_helpers.h" #include "core/hle/ipc_helpers.h"
#include "core/hle/service/ps/ps_ps.h" #include "core/hle/service/ps/ps_ps.h"
@ -32,7 +33,8 @@ PS_PS::PS_PS() : ServiceFramework("ps:ps", DefaultMaxSessions) {
RegisterHandlers(functions); RegisterHandlers(functions);
}; };
void InstallInterfaces(SM::ServiceManager& service_manager) { void InstallInterfaces(Core::System& system) {
auto& service_manager = system.ServiceManager();
std::make_shared<PS_PS>()->InstallAsService(service_manager); std::make_shared<PS_PS>()->InstallAsService(service_manager);
} }

View file

@ -6,6 +6,10 @@
#include "core/hle/service/service.h" #include "core/hle/service/service.h"
namespace Core {
class System;
}
namespace Service::PS { namespace Service::PS {
class PS_PS final : public ServiceFramework<PS_PS> { class PS_PS final : public ServiceFramework<PS_PS> {
@ -224,6 +228,6 @@ private:
}; };
/// Initializes the PS_PS Service /// Initializes the PS_PS Service
void InstallInterfaces(SM::ServiceManager& service_manager); void InstallInterfaces(Core::System& system);
} // namespace Service::PS } // namespace Service::PS

View file

@ -6,6 +6,7 @@
#include "common/common_paths.h" #include "common/common_paths.h"
#include "common/file_util.h" #include "common/file_util.h"
#include "common/logging/log.h" #include "common/logging/log.h"
#include "core/core.h"
#include "core/file_sys/archive_extsavedata.h" #include "core/file_sys/archive_extsavedata.h"
#include "core/file_sys/errors.h" #include "core/file_sys/errors.h"
#include "core/file_sys/file_backend.h" #include "core/file_sys/file_backend.h"
@ -226,7 +227,8 @@ void Module::SetPlayCoins(u16 play_coins) {
Module::Interface::Interface(std::shared_ptr<Module> ptm, const char* name, u32 max_session) Module::Interface::Interface(std::shared_ptr<Module> ptm, const char* name, u32 max_session)
: ServiceFramework(name, max_session), ptm(std::move(ptm)) {} : ServiceFramework(name, max_session), ptm(std::move(ptm)) {}
void InstallInterfaces(SM::ServiceManager& service_manager) { void InstallInterfaces(Core::System& system) {
auto& service_manager = system.ServiceManager();
auto ptm = std::make_shared<Module>(); auto ptm = std::make_shared<Module>();
std::make_shared<PTM_Gets>(ptm)->InstallAsService(service_manager); std::make_shared<PTM_Gets>(ptm)->InstallAsService(service_manager);
std::make_shared<PTM_Play>(ptm)->InstallAsService(service_manager); std::make_shared<PTM_Play>(ptm)->InstallAsService(service_manager);

View file

@ -9,6 +9,10 @@
#include "core/hle/ipc_helpers.h" #include "core/hle/ipc_helpers.h"
#include "core/hle/service/service.h" #include "core/hle/service/service.h"
namespace Core {
class System;
}
namespace Service::PTM { namespace Service::PTM {
/// Charge levels used by PTM functions /// Charge levels used by PTM functions
@ -140,6 +144,6 @@ private:
bool pedometer_is_counting = false; bool pedometer_is_counting = false;
}; };
void InstallInterfaces(SM::ServiceManager& service_manager); void InstallInterfaces(Core::System& system);
} // namespace Service::PTM } // namespace Service::PTM

View file

@ -2,12 +2,14 @@
// Licensed under GPLv2 or any later version // Licensed under GPLv2 or any later version
// Refer to the license.txt file included. // Refer to the license.txt file included.
#include "core/core.h"
#include "core/hle/service/pxi/dev.h" #include "core/hle/service/pxi/dev.h"
#include "core/hle/service/pxi/pxi.h" #include "core/hle/service/pxi/pxi.h"
namespace Service::PXI { namespace Service::PXI {
void InstallInterfaces(SM::ServiceManager& service_manager) { void InstallInterfaces(Core::System& system) {
auto& service_manager = system.ServiceManager();
std::make_shared<DEV>()->InstallAsService(service_manager); std::make_shared<DEV>()->InstallAsService(service_manager);
} }

View file

@ -6,9 +6,13 @@
#include "core/hle/service/service.h" #include "core/hle/service/service.h"
namespace Core {
class System;
}
namespace Service::PXI { namespace Service::PXI {
/// Registers all PXI services with the specified service manager. /// Registers all PXI services with the specified service manager.
void InstallInterfaces(SM::ServiceManager& service_manager); void InstallInterfaces(Core::System& system);
} // namespace Service::PXI } // namespace Service::PXI

View file

@ -2,6 +2,7 @@
// Licensed under GPLv2 or any later version // Licensed under GPLv2 or any later version
// Refer to the license.txt file included. // Refer to the license.txt file included.
#include "core/core.h"
#include "core/hle/service/qtm/qtm.h" #include "core/hle/service/qtm/qtm.h"
#include "core/hle/service/qtm/qtm_c.h" #include "core/hle/service/qtm/qtm_c.h"
#include "core/hle/service/qtm/qtm_s.h" #include "core/hle/service/qtm/qtm_s.h"
@ -10,7 +11,8 @@
namespace Service::QTM { namespace Service::QTM {
void InstallInterfaces(SM::ServiceManager& service_manager) { void InstallInterfaces(Core::System& system) {
auto& service_manager = system.ServiceManager();
std::make_shared<QTM_C>()->InstallAsService(service_manager); std::make_shared<QTM_C>()->InstallAsService(service_manager);
std::make_shared<QTM_S>()->InstallAsService(service_manager); std::make_shared<QTM_S>()->InstallAsService(service_manager);
std::make_shared<QTM_SP>()->InstallAsService(service_manager); std::make_shared<QTM_SP>()->InstallAsService(service_manager);

View file

@ -5,10 +5,13 @@
#pragma once #pragma once
#include "core/hle/service/service.h" #include "core/hle/service/service.h"
namespace Core {
class System;
}
namespace Service::QTM { namespace Service::QTM {
/// Initializes all QTM services. /// Initializes all QTM services.
void InstallInterfaces(SM::ServiceManager& service_manager); void InstallInterfaces(Core::System& system);
} // namespace Service::QTM } // namespace Service::QTM

View file

@ -69,15 +69,15 @@ const std::array<ServiceModuleInfo, 40> service_module_map{
{"LDR", 0x00040130'00003702, LDR::InstallInterfaces}, {"LDR", 0x00040130'00003702, LDR::InstallInterfaces},
{"PXI", 0x00040130'00001402, PXI::InstallInterfaces}, {"PXI", 0x00040130'00001402, PXI::InstallInterfaces},
{"ERR", 0x00040030'00008A02, [](SM::ServiceManager& sm) { ERR::InstallInterfaces(); }}, {"ERR", 0x00040030'00008A02, ERR::InstallInterfaces},
{"AC", 0x00040130'00002402, AC::InstallInterfaces}, {"AC", 0x00040130'00002402, AC::InstallInterfaces},
{"ACT", 0x00040130'00003802, ACT::InstallInterfaces}, {"ACT", 0x00040130'00003802, ACT::InstallInterfaces},
{"AM", 0x00040130'00001502, AM::InstallInterfaces}, {"AM", 0x00040130'00001502, AM::InstallInterfaces},
{"BOSS", 0x00040130'00003402, BOSS::InstallInterfaces}, {"BOSS", 0x00040130'00003402, BOSS::InstallInterfaces},
{"CAM", 0x00040130'00001602, {"CAM", 0x00040130'00001602,
[](SM::ServiceManager& sm) { [](Core::System& system) {
CAM::InstallInterfaces(sm); CAM::InstallInterfaces(system);
Y2R::InstallInterfaces(sm); Y2R::InstallInterfaces(system);
}}, }},
{"CECD", 0x00040130'00002602, CECD::InstallInterfaces}, {"CECD", 0x00040130'00002602, CECD::InstallInterfaces},
{"CFG", 0x00040130'00001702, CFG::InstallInterfaces}, {"CFG", 0x00040130'00001702, CFG::InstallInterfaces},
@ -94,9 +94,9 @@ const std::array<ServiceModuleInfo, 40> service_module_map{
{"NFC", 0x00040130'00004002, NFC::InstallInterfaces}, {"NFC", 0x00040130'00004002, NFC::InstallInterfaces},
{"NIM", 0x00040130'00002C02, NIM::InstallInterfaces}, {"NIM", 0x00040130'00002C02, NIM::InstallInterfaces},
{"NS", 0x00040130'00008002, {"NS", 0x00040130'00008002,
[](SM::ServiceManager& sm) { [](Core::System& system) {
NS::InstallInterfaces(sm); NS::InstallInterfaces(system);
APT::InstallInterfaces(sm); APT::InstallInterfaces(system);
}}, }},
{"NWM", 0x00040130'00002D02, NWM::InstallInterfaces}, {"NWM", 0x00040130'00002D02, NWM::InstallInterfaces},
{"PTM", 0x00040130'00002202, PTM::InstallInterfaces}, {"PTM", 0x00040130'00002202, PTM::InstallInterfaces},
@ -235,13 +235,13 @@ static bool AttemptLLE(const ServiceModuleInfo& service_module) {
} }
/// Initialize ServiceManager /// Initialize ServiceManager
void Init(std::shared_ptr<SM::ServiceManager>& sm) { void Init(Core::System& core, std::shared_ptr<SM::ServiceManager>& sm) {
FS::ArchiveInit(); FS::ArchiveInit();
SM::ServiceManager::InstallInterfaces(sm); SM::ServiceManager::InstallInterfaces(sm);
for (const auto& service_module : service_module_map) { for (const auto& service_module : service_module_map) {
if (!AttemptLLE(service_module) && service_module.init_function != nullptr) if (!AttemptLLE(service_module) && service_module.init_function != nullptr)
service_module.init_function(*sm); service_module.init_function(core);
} }
LOG_DEBUG(Service, "initialized OK"); LOG_DEBUG(Service, "initialized OK");
} }

View file

@ -15,8 +15,9 @@
#include "core/hle/kernel/object.h" #include "core/hle/kernel/object.h"
#include "core/hle/service/sm/sm.h" #include "core/hle/service/sm/sm.h"
//////////////////////////////////////////////////////////////////////////////////////////////////// namespace Core {
// Namespace Service class System;
}
namespace Kernel { namespace Kernel {
class ClientPort; class ClientPort;
@ -183,7 +184,7 @@ private:
}; };
/// Initialize ServiceManager /// Initialize ServiceManager
void Init(std::shared_ptr<SM::ServiceManager>& sm); void Init(Core::System& system, std::shared_ptr<SM::ServiceManager>& sm);
/// Shutdown ServiceManager /// Shutdown ServiceManager
void Shutdown(); void Shutdown();
@ -194,7 +195,7 @@ extern std::unordered_map<std::string, Kernel::SharedPtr<Kernel::ClientPort>> g_
struct ServiceModuleInfo { struct ServiceModuleInfo {
std::string name; std::string name;
u64 title_id; u64 title_id;
std::function<void(SM::ServiceManager&)> init_function; std::function<void(Core::System&)> init_function;
}; };
extern const std::array<ServiceModuleInfo, 40> service_module_map; extern const std::array<ServiceModuleInfo, 40> service_module_map;

View file

@ -10,6 +10,7 @@
#include "common/common_types.h" #include "common/common_types.h"
#include "common/logging/log.h" #include "common/logging/log.h"
#include "common/scope_exit.h" #include "common/scope_exit.h"
#include "core/core.h"
#include "core/hle/ipc_helpers.h" #include "core/hle/ipc_helpers.h"
#include "core/hle/kernel/shared_memory.h" #include "core/hle/kernel/shared_memory.h"
#include "core/hle/result.h" #include "core/hle/result.h"
@ -909,7 +910,8 @@ SOC_U::~SOC_U() {
#endif #endif
} }
void InstallInterfaces(SM::ServiceManager& service_manager) { void InstallInterfaces(Core::System& system) {
auto& service_manager = system.ServiceManager();
std::make_shared<SOC_U>()->InstallAsService(service_manager); std::make_shared<SOC_U>()->InstallAsService(service_manager);
} }

View file

@ -7,6 +7,10 @@
#include <unordered_map> #include <unordered_map>
#include "core/hle/service/service.h" #include "core/hle/service/service.h"
namespace Core {
class System;
}
namespace Service::SOC { namespace Service::SOC {
/// Holds information about a particular socket /// Holds information about a particular socket
@ -48,6 +52,6 @@ private:
std::unordered_map<u32, SocketHolder> open_sockets; std::unordered_map<u32, SocketHolder> open_sockets;
}; };
void InstallInterfaces(SM::ServiceManager& service_manager); void InstallInterfaces(Core::System& system);
} // namespace Service::SOC } // namespace Service::SOC

View file

@ -3,6 +3,7 @@
// Refer to the license.txt file included. // Refer to the license.txt file included.
#include "common/common_types.h" #include "common/common_types.h"
#include "core/core.h"
#include "core/hle/ipc.h" #include "core/hle/ipc.h"
#include "core/hle/ipc_helpers.h" #include "core/hle/ipc_helpers.h"
#include "core/hle/service/ssl_c.h" #include "core/hle/service/ssl_c.h"
@ -86,7 +87,8 @@ SSL_C::SSL_C() : ServiceFramework("ssl:C") {
RegisterHandlers(functions); RegisterHandlers(functions);
} }
void InstallInterfaces(SM::ServiceManager& service_manager) { void InstallInterfaces(Core::System& system) {
auto& service_manager = system.ServiceManager();
std::make_shared<SSL_C>()->InstallAsService(service_manager); std::make_shared<SSL_C>()->InstallAsService(service_manager);
} }

View file

@ -7,6 +7,10 @@
#include <random> #include <random>
#include "core/hle/service/service.h" #include "core/hle/service/service.h"
namespace Core {
class System;
}
namespace Service::SSL { namespace Service::SSL {
class SSL_C final : public ServiceFramework<SSL_C> { class SSL_C final : public ServiceFramework<SSL_C> {
@ -21,6 +25,6 @@ private:
std::mt19937 rand_gen; std::mt19937 rand_gen;
}; };
void InstallInterfaces(SM::ServiceManager& service_manager); void InstallInterfaces(Core::System& system);
} // namespace Service::SSL } // namespace Service::SSL

View file

@ -5,6 +5,7 @@
#include <cstring> #include <cstring>
#include "common/common_funcs.h" #include "common/common_funcs.h"
#include "common/logging/log.h" #include "common/logging/log.h"
#include "core/core.h"
#include "core/hle/ipc_helpers.h" #include "core/hle/ipc_helpers.h"
#include "core/hle/kernel/event.h" #include "core/hle/kernel/event.h"
#include "core/hle/kernel/process.h" #include "core/hle/kernel/process.h"
@ -686,7 +687,8 @@ Y2R_U::Y2R_U() : ServiceFramework("y2r:u", 1) {
Y2R_U::~Y2R_U() = default; Y2R_U::~Y2R_U() = default;
void InstallInterfaces(SM::ServiceManager& service_manager) { void InstallInterfaces(Core::System& system) {
auto& service_manager = system.ServiceManager();
std::make_shared<Y2R_U>()->InstallAsService(service_manager); std::make_shared<Y2R_U>()->InstallAsService(service_manager);
} }

View file

@ -12,6 +12,10 @@
#include "core/hle/result.h" #include "core/hle/result.h"
#include "core/hle/service/service.h" #include "core/hle/service/service.h"
namespace Core {
class System;
}
namespace Kernel { namespace Kernel {
class Event; class Event;
} }
@ -298,6 +302,6 @@ private:
bool spacial_dithering_enabled = false; bool spacial_dithering_enabled = false;
}; };
void InstallInterfaces(SM::ServiceManager& service_manager); void InstallInterfaces(Core::System& system);
} // namespace Service::Y2R } // namespace Service::Y2R