StandardNetworkSystemClockCore.cs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536
  1. using Ryujinx.HLE.HOS.Kernel.Threading;
  2. namespace Ryujinx.HLE.HOS.Services.Time.Clock
  3. {
  4. class StandardNetworkSystemClockCore : SystemClockCore
  5. {
  6. private TimeSpanType _standardNetworkClockSufficientAccuracy;
  7. public StandardNetworkSystemClockCore(StandardSteadyClockCore steadyClockCore) : base(steadyClockCore)
  8. {
  9. _standardNetworkClockSufficientAccuracy = new TimeSpanType(0);
  10. }
  11. public bool IsStandardNetworkSystemClockAccuracySufficient(KThread thread)
  12. {
  13. SteadyClockCore steadyClockCore = GetSteadyClockCore();
  14. SteadyClockTimePoint currentTimePoint = steadyClockCore.GetCurrentTimePoint(thread);
  15. bool isStandardNetworkClockSufficientAccuracy = false;
  16. ResultCode result = GetClockContext(thread, out SystemClockContext context);
  17. if (result == ResultCode.Success && context.SteadyTimePoint.GetSpanBetween(currentTimePoint, out long outSpan) == ResultCode.Success)
  18. {
  19. isStandardNetworkClockSufficientAccuracy = outSpan * 1000000000 < _standardNetworkClockSufficientAccuracy.NanoSeconds;
  20. }
  21. return isStandardNetworkClockSufficientAccuracy;
  22. }
  23. public void SetStandardNetworkClockSufficientAccuracy(TimeSpanType standardNetworkClockSufficientAccuracy)
  24. {
  25. _standardNetworkClockSufficientAccuracy = standardNetworkClockSufficientAccuracy;
  26. }
  27. }
  28. }