mirror of
https://github.com/DarthAffe/RGB.NET.git
synced 2025-12-12 17:48:31 +00:00
Fixed wrong update-loop
This commit is contained in:
parent
87211dab69
commit
3965bfb9a0
@ -23,7 +23,7 @@ namespace RGB.NET.Core
|
||||
/// </summary>
|
||||
public static RGBSurface Instance { get; } = new RGBSurface();
|
||||
|
||||
private long _lastUpdateTicks;
|
||||
private Stopwatch _deltaTimeCounter;
|
||||
|
||||
private IList<IRGBDeviceProvider> _deviceProvider = new List<IRGBDeviceProvider>();
|
||||
private IList<IRGBDevice> _devices = new List<IRGBDevice>();
|
||||
@ -60,7 +60,8 @@ namespace RGB.NET.Core
|
||||
/// </summary>
|
||||
private RGBSurface()
|
||||
{
|
||||
_lastUpdateTicks = Stopwatch.GetTimestamp();
|
||||
_deltaTimeCounter = Stopwatch.StartNew();
|
||||
_sleepCounter = new Stopwatch();
|
||||
|
||||
CheckUpdateLoop();
|
||||
}
|
||||
|
||||
@ -1,5 +1,4 @@
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
|
||||
namespace RGB.NET.Core
|
||||
{
|
||||
@ -83,9 +82,9 @@ namespace RGB.NET.Core
|
||||
{
|
||||
try
|
||||
{
|
||||
long lastUpdateTicks = _lastUpdateTicks;
|
||||
_lastUpdateTicks = Stopwatch.GetTimestamp();
|
||||
Updating?.Invoke(new UpdatingEventArgs((_lastUpdateTicks - lastUpdateTicks) / 10000000.0));
|
||||
double deltaTime = _deltaTimeCounter.Elapsed.TotalSeconds;
|
||||
_deltaTimeCounter.Restart();
|
||||
Updating?.Invoke(new UpdatingEventArgs(deltaTime));
|
||||
}
|
||||
catch { /* Well ... that's not my fault */ }
|
||||
}
|
||||
|
||||
@ -12,6 +12,7 @@ namespace RGB.NET.Core
|
||||
private CancellationTokenSource _updateTokenSource;
|
||||
private CancellationToken _updateToken;
|
||||
private Task _updateTask;
|
||||
private Stopwatch _sleepCounter;
|
||||
|
||||
// ReSharper disable MemberCanBePrivate.Global
|
||||
|
||||
@ -87,12 +88,13 @@ namespace RGB.NET.Core
|
||||
{
|
||||
while (!_updateToken.IsCancellationRequested)
|
||||
{
|
||||
long preUpdateTicks = Stopwatch.GetTimestamp();
|
||||
_sleepCounter.Restart();
|
||||
|
||||
Update();
|
||||
|
||||
LastUpdateTime = ((Stopwatch.GetTimestamp() - preUpdateTicks) / 10000.0);
|
||||
int sleep = (int)((UpdateFrequency * 1000.0) - LastUpdateTime);
|
||||
_sleepCounter.Stop();
|
||||
LastUpdateTime = _sleepCounter.Elapsed.TotalSeconds;
|
||||
int sleep = (int)((UpdateFrequency * 1000.0) - _sleepCounter.ElapsedMilliseconds);
|
||||
if (sleep > 0)
|
||||
Thread.Sleep(sleep);
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user