diff options
| author | Thomas Guillemard <me@thog.eu> | 2019-07-15 19:52:35 +0200 |
|---|---|---|
| committer | Ac_K <Acoustik666@gmail.com> | 2019-07-15 19:52:35 +0200 |
| commit | 1f3a34dd7a5977fc340de310b2109493e5e6973f (patch) | |
| tree | 95b6e42b3e99fec08b1c361fe8fb82510471514d /Ryujinx.HLE/HOS/Services/Time/Clock/StandardNetworkSystemClockCore.cs | |
| parent | d8424a63c637f0636e301252b2b8a1fb90f2457d (diff) | |
Implement time:* 2.0.0 & 3.0.0 commands (#735)
* Finish ISteadyClock implementation
* Implement IsStandardNetworkSystemClockAccuracySufficient
Also use signed values for offsets and TimeSpanType
* Address comments
* Fix one missing nit and improve one comment
Diffstat (limited to 'Ryujinx.HLE/HOS/Services/Time/Clock/StandardNetworkSystemClockCore.cs')
| -rw-r--r-- | Ryujinx.HLE/HOS/Services/Time/Clock/StandardNetworkSystemClockCore.cs | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/Ryujinx.HLE/HOS/Services/Time/Clock/StandardNetworkSystemClockCore.cs b/Ryujinx.HLE/HOS/Services/Time/Clock/StandardNetworkSystemClockCore.cs index 59bc822c..c00f460e 100644 --- a/Ryujinx.HLE/HOS/Services/Time/Clock/StandardNetworkSystemClockCore.cs +++ b/Ryujinx.HLE/HOS/Services/Time/Clock/StandardNetworkSystemClockCore.cs @@ -1,4 +1,5 @@ -using Ryujinx.HLE.HOS.Kernel.Threading; +using System; +using Ryujinx.HLE.HOS.Kernel.Threading; namespace Ryujinx.HLE.HOS.Services.Time.Clock { @@ -6,6 +7,7 @@ namespace Ryujinx.HLE.HOS.Services.Time.Clock { private SteadyClockCore _steadyClockCore; private SystemClockContext _context; + private TimeSpanType _standardNetworkClockSufficientAccuracy; private static StandardNetworkSystemClockCore instance; @@ -27,7 +29,8 @@ namespace Ryujinx.HLE.HOS.Services.Time.Clock _steadyClockCore = steadyClockCore; _context = new SystemClockContext(); - _context.SteadyTimePoint.ClockSourceId = steadyClockCore.GetClockSourceId(); + _context.SteadyTimePoint.ClockSourceId = steadyClockCore.GetClockSourceId(); + _standardNetworkClockSufficientAccuracy = new TimeSpanType(0); } public override ResultCode Flush(SystemClockContext context) @@ -55,5 +58,25 @@ namespace Ryujinx.HLE.HOS.Services.Time.Clock return ResultCode.Success; } + + public bool IsStandardNetworkSystemClockAccuracySufficient(KThread thread) + { + SteadyClockCore steadyClockCore = GetSteadyClockCore(); + SteadyClockTimePoint currentTimePoint = steadyClockCore.GetCurrentTimePoint(thread); + + bool isStandardNetworkClockSufficientAccuracy = false; + + if (_context.SteadyTimePoint.GetSpanBetween(currentTimePoint, out long outSpan) == ResultCode.Success) + { + isStandardNetworkClockSufficientAccuracy = outSpan * 1000000000 < _standardNetworkClockSufficientAccuracy.NanoSeconds; + } + + return isStandardNetworkClockSufficientAccuracy; + } + + public void SetStandardNetworkClockSufficientAccuracy(TimeSpanType standardNetworkClockSufficientAccuracy) + { + _standardNetworkClockSufficientAccuracy = standardNetworkClockSufficientAccuracy; + } } } |
