using System; using System.Diagnostics; namespace Ryujinx.Cpu { public class TickSource : ITickSource { private static Stopwatch _tickCounter; private static double _hostTickFreq; /// <inheritdoc/> public ulong Frequency { get; } /// <inheritdoc/> public ulong Counter => (ulong)(ElapsedSeconds * Frequency); /// <inheritdoc/> public TimeSpan ElapsedTime => _tickCounter.Elapsed; /// <inheritdoc/> public double ElapsedSeconds => _tickCounter.ElapsedTicks * _hostTickFreq; public TickSource(ulong frequency) { Frequency = frequency; _hostTickFreq = 1.0 / Stopwatch.Frequency; _tickCounter = new Stopwatch(); _tickCounter.Start(); } /// <inheritdoc/> public void Suspend() { _tickCounter.Stop(); } /// <inheritdoc/> public void Resume() { _tickCounter.Start(); } } }