1 // Copyright 2019 yuzu emulator team 2 // Licensed under GPLv2 or any later version 3 // Refer to the license.txt file included. 4 5 #pragma once 6 7 #include "core/hle/service/time/clock_types.h" 8 #include "core/hle/service/time/steady_clock_core.h" 9 10 namespace Core { 11 class System; 12 } 13 14 namespace Service::Time::Clock { 15 16 class StandardSteadyClockCore final : public SteadyClockCore { 17 public: GetTimePoint(Core::System & system)18 SteadyClockTimePoint GetTimePoint(Core::System& system) override { 19 return {GetCurrentRawTimePoint(system).ToSeconds(), GetClockSourceId()}; 20 } 21 GetInternalOffset()22 TimeSpanType GetInternalOffset() const override { 23 return internal_offset; 24 } 25 SetInternalOffset(TimeSpanType value)26 void SetInternalOffset(TimeSpanType value) override { 27 internal_offset = value; 28 } 29 30 TimeSpanType GetCurrentRawTimePoint(Core::System& system) override; 31 SetSetupValue(TimeSpanType value)32 void SetSetupValue(TimeSpanType value) { 33 setup_value = value; 34 } 35 36 private: 37 TimeSpanType setup_value{}; 38 TimeSpanType internal_offset{}; 39 TimeSpanType cached_raw_time_point{}; 40 }; 41 42 } // namespace Service::Time::Clock 43