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:
@@ -182,7 +182,8 @@ void Module::Interface::GetSharedFont(Kernel::HLERequestContext& ctx) {
|
||||
IPC::RequestBuilder rb = rp.MakeBuilder(2, 2);
|
||||
|
||||
// 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) {
|
||||
// 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>(0);
|
||||
rb.PushCopyObjects<Kernel::Object>(nullptr);
|
||||
Core::System::GetInstance().SetStatus(Core::System::ResultStatus::ErrorSystemFiles,
|
||||
"Shared fonts");
|
||||
apt->system.SetStatus(Core::System::ResultStatus::ErrorSystemFiles, "Shared fonts");
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -544,7 +544,7 @@ void Module::Interface::CloseApplication(Kernel::HLERequestContext& ctx) {
|
||||
|
||||
LOG_DEBUG(Service_APT, "called");
|
||||
|
||||
Core::System::GetInstance().RequestShutdown();
|
||||
apt->system.RequestShutdown();
|
||||
|
||||
IPC::RequestBuilder rb = rp.MakeBuilder(1, 0);
|
||||
rb.Push(RESULT_SUCCESS);
|
||||
@@ -584,11 +584,11 @@ void Module::Interface::DoApplicationJump(Kernel::HLERequestContext& ctx) {
|
||||
|
||||
if (application_reset_prepared) {
|
||||
// Reset system
|
||||
Core::System::GetInstance().RequestReset();
|
||||
apt->system.RequestReset();
|
||||
} else {
|
||||
// After the jump, the application should shutdown
|
||||
// TODO: Actually implement the jump
|
||||
Core::System::GetInstance().RequestShutdown();
|
||||
apt->system.RequestShutdown();
|
||||
}
|
||||
|
||||
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::Module() {
|
||||
Module::Module(Core::System& system) : system(system) {
|
||||
applet_manager = std::make_shared<AppletManager>();
|
||||
|
||||
using Kernel::MemoryPermission;
|
||||
@@ -857,8 +857,9 @@ Module::Module() {
|
||||
|
||||
Module::~Module() {}
|
||||
|
||||
void InstallInterfaces(SM::ServiceManager& service_manager) {
|
||||
auto apt = std::make_shared<Module>();
|
||||
void InstallInterfaces(Core::System& system) {
|
||||
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_S>(apt)->InstallAsService(service_manager);
|
||||
std::make_shared<APT_A>(apt)->InstallAsService(service_manager);
|
||||
|
@@ -11,6 +11,10 @@
|
||||
#include "core/hle/kernel/kernel.h"
|
||||
#include "core/hle/service/service.h"
|
||||
|
||||
namespace Core {
|
||||
class System;
|
||||
}
|
||||
|
||||
namespace Kernel {
|
||||
class Mutex;
|
||||
class SharedMemory;
|
||||
@@ -52,7 +56,7 @@ enum class ScreencapPostPermission : u32 {
|
||||
|
||||
class Module final {
|
||||
public:
|
||||
Module();
|
||||
explicit Module(Core::System& system);
|
||||
~Module();
|
||||
|
||||
class Interface : public ServiceFramework<Interface> {
|
||||
@@ -582,6 +586,8 @@ private:
|
||||
bool LoadSharedFont();
|
||||
bool LoadLegacySharedFont();
|
||||
|
||||
Core::System& system;
|
||||
|
||||
/// Handle to shared memory region designated to for shared system font
|
||||
Kernel::SharedPtr<Kernel::SharedMemory> shared_font_mem;
|
||||
bool shared_font_loaded = false;
|
||||
@@ -602,6 +608,6 @@ private:
|
||||
std::shared_ptr<AppletManager> applet_manager;
|
||||
};
|
||||
|
||||
void InstallInterfaces(SM::ServiceManager& service_manager);
|
||||
void InstallInterfaces(Core::System& system);
|
||||
|
||||
} // namespace Service::APT
|
||||
|
Reference in New Issue
Block a user