diff options
author | bunnei <bunneidev@gmail.com> | 2018-11-19 04:22:47 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-11-19 04:22:47 +0100 |
commit | f08b4cbbc889b09aa628f586018f1119b3cbd7ce (patch) | |
tree | 7050250f290b1dcd62ff8c11f287604cbf61a8b1 /src/core/hle | |
parent | Correctly sets default system language for yuzu-CLI (#1727) (diff) | |
parent | Implemented CalculateStandardUserSystemClockDifferenceByUser (diff) | |
download | yuzu-f08b4cbbc889b09aa628f586018f1119b3cbd7ce.tar yuzu-f08b4cbbc889b09aa628f586018f1119b3cbd7ce.tar.gz yuzu-f08b4cbbc889b09aa628f586018f1119b3cbd7ce.tar.bz2 yuzu-f08b4cbbc889b09aa628f586018f1119b3cbd7ce.tar.lz yuzu-f08b4cbbc889b09aa628f586018f1119b3cbd7ce.tar.xz yuzu-f08b4cbbc889b09aa628f586018f1119b3cbd7ce.tar.zst yuzu-f08b4cbbc889b09aa628f586018f1119b3cbd7ce.zip |
Diffstat (limited to 'src/core/hle')
-rw-r--r-- | src/core/hle/service/time/interface.cpp | 3 | ||||
-rw-r--r-- | src/core/hle/service/time/time.cpp | 15 | ||||
-rw-r--r-- | src/core/hle/service/time/time.h | 1 |
3 files changed, 18 insertions, 1 deletions
diff --git a/src/core/hle/service/time/interface.cpp b/src/core/hle/service/time/interface.cpp index e3cbd7004..b3a196f65 100644 --- a/src/core/hle/service/time/interface.cpp +++ b/src/core/hle/service/time/interface.cpp @@ -23,7 +23,8 @@ Time::Time(std::shared_ptr<Module> time, const char* name) {300, nullptr, "CalculateMonotonicSystemClockBaseTimePoint"}, {400, &Time::GetClockSnapshot, "GetClockSnapshot"}, {401, nullptr, "GetClockSnapshotFromSystemClockContext"}, - {500, nullptr, "CalculateStandardUserSystemClockDifferenceByUser"}, + {500, &Time::CalculateStandardUserSystemClockDifferenceByUser, + "CalculateStandardUserSystemClockDifferenceByUser"}, {501, nullptr, "CalculateSpanBetween"}, }; RegisterHandlers(functions); diff --git a/src/core/hle/service/time/time.cpp b/src/core/hle/service/time/time.cpp index 85e7b1195..e561a0c52 100644 --- a/src/core/hle/service/time/time.cpp +++ b/src/core/hle/service/time/time.cpp @@ -299,6 +299,21 @@ void Module::Interface::GetClockSnapshot(Kernel::HLERequestContext& ctx) { ctx.WriteBuffer(&clock_snapshot, sizeof(ClockSnapshot)); } +void Module::Interface::CalculateStandardUserSystemClockDifferenceByUser( + Kernel::HLERequestContext& ctx) { + LOG_DEBUG(Service_Time, "called"); + + IPC::RequestParser rp{ctx}; + const auto snapshot_a = rp.PopRaw<ClockSnapshot>(); + const auto snapshot_b = rp.PopRaw<ClockSnapshot>(); + const u64 difference = + snapshot_b.user_clock_context.offset - snapshot_a.user_clock_context.offset; + + IPC::ResponseBuilder rb{ctx, 4}; + rb.Push(RESULT_SUCCESS); + rb.PushRaw<u64>(difference); +} + Module::Interface::Interface(std::shared_ptr<Module> time, const char* name) : ServiceFramework(name), time(std::move(time)) {} diff --git a/src/core/hle/service/time/time.h b/src/core/hle/service/time/time.h index 77871ae07..ea43fbea7 100644 --- a/src/core/hle/service/time/time.h +++ b/src/core/hle/service/time/time.h @@ -84,6 +84,7 @@ public: void GetTimeZoneService(Kernel::HLERequestContext& ctx); void GetStandardLocalSystemClock(Kernel::HLERequestContext& ctx); void GetClockSnapshot(Kernel::HLERequestContext& ctx); + void CalculateStandardUserSystemClockDifferenceByUser(Kernel::HLERequestContext& ctx); protected: std::shared_ptr<Module> time; |