aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.HLE/HOS/Services/Time/Clock/StandardNetworkSystemClockCore.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Ryujinx.HLE/HOS/Services/Time/Clock/StandardNetworkSystemClockCore.cs')
-rw-r--r--Ryujinx.HLE/HOS/Services/Time/Clock/StandardNetworkSystemClockCore.cs27
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;
+ }
}
}