Skip to content

Commit

Permalink
Fix internal offset not working since changes and ensure that user cl…
Browse files Browse the repository at this point in the history
…ock have a valid clock id
  • Loading branch information
marysaka committed May 5, 2023
1 parent 9cebca6 commit 3431dc0
Show file tree
Hide file tree
Showing 3 changed files with 6 additions and 6 deletions.
8 changes: 4 additions & 4 deletions src/Ryujinx.HLE/HOS/Horizon.cs
Original file line number Diff line number Diff line change
Expand Up @@ -222,22 +222,22 @@ public Horizon(Switch device)
internalOffset = internalOffset.AddSeconds(-3600L);
}

internalOffset = new TimeSpanType(-internalOffset.NanoSeconds);
systemTime = new TimeSpanType(systemTime.NanoSeconds - internalOffset.NanoSeconds);

// First init the standard steady clock
TimeServiceManager.Instance.SetupStandardSteadyClock(TickSource, clockSourceId, TimeSpanType.Zero, internalOffset, TimeSpanType.Zero, false);
TimeServiceManager.Instance.SetupStandardSteadyClock(TickSource, clockSourceId, TimeSpanType.Zero, TimeSpanType.Zero, TimeSpanType.Zero, false);
TimeServiceManager.Instance.SetupStandardLocalSystemClock(TickSource, new SystemClockContext(), systemTime.ToSeconds());
TimeServiceManager.Instance.StandardLocalSystemClock.GetClockContext(TickSource, out SystemClockContext localSytemClockContext);

if (NxSettings.Settings.TryGetValue("time!standard_network_clock_sufficient_accuracy_minutes", out object standardNetworkClockSufficientAccuracyMinutes))
{
TimeSpanType standardNetworkClockSufficientAccuracy = new TimeSpanType((int)standardNetworkClockSufficientAccuracyMinutes * 60000000000);

// The network system clock needs a valid system clock, as such we setup this system clock using the local system clock.
TimeServiceManager.Instance.StandardLocalSystemClock.GetClockContext(TickSource, out SystemClockContext localSytemClockContext);
TimeServiceManager.Instance.SetupStandardNetworkSystemClock(localSytemClockContext, standardNetworkClockSufficientAccuracy);
}

TimeServiceManager.Instance.SetupStandardUserSystemClock(TickSource, false, SteadyClockTimePoint.GetRandom());
TimeServiceManager.Instance.SetupStandardUserSystemClock(TickSource, false, localSytemClockContext.SteadyTimePoint);

// FIXME: TimeZone should be init here but it's actually done in ContentManager

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ struct ContinuousAdjustmentTimePoint
{
public ulong ClockOffset;
public long Multiplier;
public long Divider;
public long DivisorLog2;
public SystemClockContext Context;
}
}
2 changes: 1 addition & 1 deletion src/Ryujinx.HLE/HOS/Services/Time/TimeSharedMemory.cs
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ private void UpdateSteadyClock(ITickSource tickSource, UInt128 clockSourceId, Ti
{
ClockOffset = (ulong)ticksTimeSpan.NanoSeconds,
Multiplier = 1,
Divider = 0,
DivisorLog2 = 0,
Context = new SystemClockContext
{
Offset = 0,
Expand Down

0 comments on commit 3431dc0

Please sign in to comment.