service: Eliminate usages of the global system instance
Completely removes all usages of the global system instance within the services code by passing in the using system instance to the services.
This commit is contained in:
parent
322349e8cc
commit
1a954b2a59
222 changed files with 1221 additions and 907 deletions
|
@ -33,8 +33,8 @@ std::optional<u64> GetTitleIDForProcessID(const Core::System& system, u64 proces
|
|||
}
|
||||
} // Anonymous namespace
|
||||
|
||||
ARP_R::ARP_R(const Core::System& system, const ARPManager& manager)
|
||||
: ServiceFramework{"arp:r"}, system(system), manager(manager) {
|
||||
ARP_R::ARP_R(Core::System& system_, const ARPManager& manager_)
|
||||
: ServiceFramework{system_, "arp:r"}, manager{manager_} {
|
||||
// clang-format off
|
||||
static const FunctionInfo functions[] = {
|
||||
{0, &ARP_R::GetApplicationLaunchProperty, "GetApplicationLaunchProperty"},
|
||||
|
@ -152,8 +152,9 @@ class IRegistrar final : public ServiceFramework<IRegistrar> {
|
|||
|
||||
public:
|
||||
explicit IRegistrar(
|
||||
Core::System& system_,
|
||||
std::function<ResultCode(u64, ApplicationLaunchProperty, std::vector<u8>)> issuer)
|
||||
: ServiceFramework{"IRegistrar"}, issue_process_id(std::move(issuer)) {
|
||||
: ServiceFramework{system_, "IRegistrar"}, issue_process_id{std::move(issuer)} {
|
||||
// clang-format off
|
||||
static const FunctionInfo functions[] = {
|
||||
{0, &IRegistrar::Issue, "Issue"},
|
||||
|
@ -237,8 +238,8 @@ private:
|
|||
std::vector<u8> control;
|
||||
};
|
||||
|
||||
ARP_W::ARP_W(const Core::System& system, ARPManager& manager)
|
||||
: ServiceFramework{"arp:w"}, system(system), manager(manager) {
|
||||
ARP_W::ARP_W(Core::System& system_, ARPManager& manager_)
|
||||
: ServiceFramework{system_, "arp:w"}, manager{manager_} {
|
||||
// clang-format off
|
||||
static const FunctionInfo functions[] = {
|
||||
{0, &ARP_W::AcquireRegistrar, "AcquireRegistrar"},
|
||||
|
@ -255,7 +256,7 @@ void ARP_W::AcquireRegistrar(Kernel::HLERequestContext& ctx) {
|
|||
LOG_DEBUG(Service_ARP, "called");
|
||||
|
||||
registrar = std::make_shared<IRegistrar>(
|
||||
[this](u64 process_id, ApplicationLaunchProperty launch, std::vector<u8> control) {
|
||||
system, [this](u64 process_id, ApplicationLaunchProperty launch, std::vector<u8> control) {
|
||||
const auto res = GetTitleIDForProcessID(system, process_id);
|
||||
if (!res.has_value()) {
|
||||
return ERR_NOT_REGISTERED;
|
||||
|
|
|
@ -13,7 +13,7 @@ class IRegistrar;
|
|||
|
||||
class ARP_R final : public ServiceFramework<ARP_R> {
|
||||
public:
|
||||
explicit ARP_R(const Core::System& system, const ARPManager& manager);
|
||||
explicit ARP_R(Core::System& system_, const ARPManager& manager_);
|
||||
~ARP_R() override;
|
||||
|
||||
private:
|
||||
|
@ -22,20 +22,18 @@ private:
|
|||
void GetApplicationControlProperty(Kernel::HLERequestContext& ctx);
|
||||
void GetApplicationControlPropertyWithApplicationId(Kernel::HLERequestContext& ctx);
|
||||
|
||||
const Core::System& system;
|
||||
const ARPManager& manager;
|
||||
};
|
||||
|
||||
class ARP_W final : public ServiceFramework<ARP_W> {
|
||||
public:
|
||||
explicit ARP_W(const Core::System& system, ARPManager& manager);
|
||||
explicit ARP_W(Core::System& system_, ARPManager& manager_);
|
||||
~ARP_W() override;
|
||||
|
||||
private:
|
||||
void AcquireRegistrar(Kernel::HLERequestContext& ctx);
|
||||
void DeleteProperties(Kernel::HLERequestContext& ctx);
|
||||
|
||||
const Core::System& system;
|
||||
ARPManager& manager;
|
||||
std::shared_ptr<IRegistrar> registrar;
|
||||
};
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
namespace Service::Glue {
|
||||
|
||||
BGTC_T::BGTC_T() : ServiceFramework{"bgtc:t"} {
|
||||
BGTC_T::BGTC_T(Core::System& system_) : ServiceFramework{system_, "bgtc:t"} {
|
||||
// clang-format off
|
||||
static const FunctionInfo functions[] = {
|
||||
{1, nullptr, "NotifyTaskStarting"},
|
||||
|
@ -31,7 +31,7 @@ BGTC_T::BGTC_T() : ServiceFramework{"bgtc:t"} {
|
|||
|
||||
BGTC_T::~BGTC_T() = default;
|
||||
|
||||
BGTC_SC::BGTC_SC() : ServiceFramework{"bgtc:sc"} {
|
||||
BGTC_SC::BGTC_SC(Core::System& system_) : ServiceFramework{system_, "bgtc:sc"} {
|
||||
// clang-format off
|
||||
static const FunctionInfo functions[] = {
|
||||
{1, nullptr, "GetState"},
|
||||
|
|
|
@ -6,17 +6,21 @@
|
|||
|
||||
#include "core/hle/service/service.h"
|
||||
|
||||
namespace Core {
|
||||
class System;
|
||||
}
|
||||
|
||||
namespace Service::Glue {
|
||||
|
||||
class BGTC_T final : public ServiceFramework<BGTC_T> {
|
||||
public:
|
||||
BGTC_T();
|
||||
explicit BGTC_T(Core::System& system_);
|
||||
~BGTC_T() override;
|
||||
};
|
||||
|
||||
class BGTC_SC final : public ServiceFramework<BGTC_SC> {
|
||||
public:
|
||||
BGTC_SC();
|
||||
explicit BGTC_SC(Core::System& system_);
|
||||
~BGTC_SC() override;
|
||||
};
|
||||
|
||||
|
|
|
@ -18,8 +18,8 @@ void InstallInterfaces(Core::System& system) {
|
|||
->InstallAsService(system.ServiceManager());
|
||||
|
||||
// BackGround Task Controller
|
||||
std::make_shared<BGTC_T>()->InstallAsService(system.ServiceManager());
|
||||
std::make_shared<BGTC_SC>()->InstallAsService(system.ServiceManager());
|
||||
std::make_shared<BGTC_T>(system)->InstallAsService(system.ServiceManager());
|
||||
std::make_shared<BGTC_SC>(system)->InstallAsService(system.ServiceManager());
|
||||
}
|
||||
|
||||
} // namespace Service::Glue
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue