| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- 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();
- }
- }
- }
|