diff options
Diffstat (limited to 'src/core/hle')
-rw-r--r-- | src/core/hle/service/time/interface.cpp | 4 | ||||
-rw-r--r-- | src/core/hle/service/time/interface.h | 2 | ||||
-rw-r--r-- | src/core/hle/service/time/time.cpp | 25 | ||||
-rw-r--r-- | src/core/hle/service/time/time.h | 4 |
4 files changed, 21 insertions, 14 deletions
diff --git a/src/core/hle/service/time/interface.cpp b/src/core/hle/service/time/interface.cpp index 1030185e0..9565e7de5 100644 --- a/src/core/hle/service/time/interface.cpp +++ b/src/core/hle/service/time/interface.cpp @@ -7,8 +7,8 @@ namespace Service::Time { Time::Time(std::shared_ptr<Module> time, std::shared_ptr<SharedMemory> shared_memory, - const char* name) - : Module::Interface(std::move(time), std::move(shared_memory), name) { + Core::System& system, const char* name) + : Module::Interface(std::move(time), std::move(shared_memory), system, name) { // clang-format off static const FunctionInfo functions[] = { {0, &Time::GetStandardUserSystemClock, "GetStandardUserSystemClock"}, diff --git a/src/core/hle/service/time/interface.h b/src/core/hle/service/time/interface.h index bdf0883e2..5c63a07f4 100644 --- a/src/core/hle/service/time/interface.h +++ b/src/core/hle/service/time/interface.h @@ -13,7 +13,7 @@ class SharedMemory; class Time final : public Module::Interface { public: explicit Time(std::shared_ptr<Module> time, std::shared_ptr<SharedMemory> shared_memory, - const char* name); + Core::System& system, const char* name); ~Time() override; }; diff --git a/src/core/hle/service/time/time.cpp b/src/core/hle/service/time/time.cpp index ae6446204..1b9ab8401 100644 --- a/src/core/hle/service/time/time.cpp +++ b/src/core/hle/service/time/time.cpp @@ -126,8 +126,8 @@ private: class ISteadyClock final : public ServiceFramework<ISteadyClock> { public: - ISteadyClock(std::shared_ptr<SharedMemory> shared_memory) - : ServiceFramework("ISteadyClock"), shared_memory(shared_memory) { + ISteadyClock(std::shared_ptr<SharedMemory> shared_memory, Core::System& system) + : ServiceFramework("ISteadyClock"), shared_memory(shared_memory), system(system) { static const FunctionInfo functions[] = { {0, &ISteadyClock::GetCurrentTimePoint, "GetCurrentTimePoint"}, }; @@ -150,12 +150,13 @@ private: } SteadyClockTimePoint GetCurrentTimePoint() const { - const auto& core_timing = Core::System::GetInstance().CoreTiming(); + const auto& core_timing = system.CoreTiming(); const auto ms = Core::Timing::CyclesToMs(core_timing.GetTicks()); return {static_cast<u64_le>(ms.count() / 1000), {}}; } std::shared_ptr<SharedMemory> shared_memory; + Core::System& system; }; class ITimeZoneService final : public ServiceFramework<ITimeZoneService> { @@ -290,7 +291,7 @@ void Module::Interface::GetStandardSteadyClock(Kernel::HLERequestContext& ctx) { IPC::ResponseBuilder rb{ctx, 2, 0, 1}; rb.Push(RESULT_SUCCESS); - rb.PushIpcInterface<ISteadyClock>(shared_memory); + rb.PushIpcInterface<ISteadyClock>(shared_memory, system); } void Module::Interface::GetTimeZoneService(Kernel::HLERequestContext& ctx) { @@ -325,7 +326,7 @@ void Module::Interface::GetClockSnapshot(Kernel::HLERequestContext& ctx) { return; } - const auto& core_timing = Core::System::GetInstance().CoreTiming(); + const auto& core_timing = system.CoreTiming(); const auto ms = Core::Timing::CyclesToMs(core_timing.GetTicks()); const SteadyClockTimePoint steady_clock_time_point{static_cast<u64_le>(ms.count() / 1000), {}}; @@ -407,8 +408,10 @@ void Module::Interface::SetStandardUserSystemClockAutomaticCorrectionEnabled( } Module::Interface::Interface(std::shared_ptr<Module> time, - std::shared_ptr<SharedMemory> shared_memory, const char* name) - : ServiceFramework(name), time(std::move(time)), shared_memory(std::move(shared_memory)) {} + std::shared_ptr<SharedMemory> shared_memory, Core::System& system, + const char* name) + : ServiceFramework(name), time(std::move(time)), shared_memory(std::move(shared_memory)), + system(system) {} Module::Interface::~Interface() = default; @@ -416,9 +419,11 @@ void InstallInterfaces(Core::System& system) { auto time = std::make_shared<Module>(); auto shared_mem = std::make_shared<SharedMemory>(system); - std::make_shared<Time>(time, shared_mem, "time:a")->InstallAsService(system.ServiceManager()); - std::make_shared<Time>(time, shared_mem, "time:s")->InstallAsService(system.ServiceManager()); - std::make_shared<Time>(std::move(time), shared_mem, "time:u") + std::make_shared<Time>(time, shared_mem, system, "time:a") + ->InstallAsService(system.ServiceManager()); + std::make_shared<Time>(time, shared_mem, system, "time:s") + ->InstallAsService(system.ServiceManager()); + std::make_shared<Time>(std::move(time), shared_mem, system, "time:u") ->InstallAsService(system.ServiceManager()); } diff --git a/src/core/hle/service/time/time.h b/src/core/hle/service/time/time.h index e0708f856..c32d32860 100644 --- a/src/core/hle/service/time/time.h +++ b/src/core/hle/service/time/time.h @@ -80,7 +80,8 @@ public: class Interface : public ServiceFramework<Interface> { public: explicit Interface(std::shared_ptr<Module> time, - std::shared_ptr<SharedMemory> shared_memory, const char* name); + std::shared_ptr<SharedMemory> shared_memory, Core::System& system, + const char* name); ~Interface() override; void GetStandardUserSystemClock(Kernel::HLERequestContext& ctx); @@ -97,6 +98,7 @@ public: protected: std::shared_ptr<Module> time; std::shared_ptr<SharedMemory> shared_memory; + Core::System& system; }; }; |