mirror of
https://github.com/yuzu-emu/yuzu-android.git
synced 2025-06-20 06:37:54 -05:00
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:
@ -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
|
||||
|
Reference in New Issue
Block a user