Make PerformanceStatistics thread safe
This commit is contained in:
parent
e7320471b9
commit
a363bc4a14
1 changed files with 15 additions and 6 deletions
|
@ -1,6 +1,7 @@
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.Timers;
|
using System.Timers;
|
||||||
|
|
||||||
|
|
||||||
namespace Ryujinx.HLE
|
namespace Ryujinx.HLE
|
||||||
{
|
{
|
||||||
public class PerformanceStatistics
|
public class PerformanceStatistics
|
||||||
|
@ -32,6 +33,8 @@ namespace Ryujinx.HLE
|
||||||
|
|
||||||
FramesRendered = new long[2];
|
FramesRendered = new long[2];
|
||||||
|
|
||||||
|
FrameLock = new object[] { new object(), new object() };
|
||||||
|
|
||||||
ExecutionTime = new Stopwatch();
|
ExecutionTime = new Stopwatch();
|
||||||
|
|
||||||
ExecutionTime.Start();
|
ExecutionTime.Start();
|
||||||
|
@ -62,14 +65,17 @@ namespace Ryujinx.HLE
|
||||||
FrameRate = FramesRendered[FrameType] / AccumulatedFrameTime[FrameType];
|
FrameRate = FramesRendered[FrameType] / AccumulatedFrameTime[FrameType];
|
||||||
}
|
}
|
||||||
|
|
||||||
AverageFrameRate[FrameType] = Mix(AverageFrameRate[FrameType], FrameRate);
|
lock (FrameLock[FrameType])
|
||||||
|
{
|
||||||
|
AverageFrameRate[FrameType] = LinearInterpolate(AverageFrameRate[FrameType], FrameRate);
|
||||||
|
|
||||||
FramesRendered[FrameType] = 0;
|
FramesRendered[FrameType] = 0;
|
||||||
|
|
||||||
AccumulatedFrameTime[FrameType] = 0;
|
AccumulatedFrameTime[FrameType] = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private double Mix(double Old, double New)
|
private double LinearInterpolate(double Old, double New)
|
||||||
{
|
{
|
||||||
return Old * (1.0 - FrameRateWeight) + New * FrameRateWeight;
|
return Old * (1.0 - FrameRateWeight) + New * FrameRateWeight;
|
||||||
}
|
}
|
||||||
|
@ -92,9 +98,12 @@ namespace Ryujinx.HLE
|
||||||
|
|
||||||
PreviousFrameTime[FrameType] = CurrentFrameTime;
|
PreviousFrameTime[FrameType] = CurrentFrameTime;
|
||||||
|
|
||||||
AccumulatedFrameTime[FrameType] += ElapsedFrameTime;
|
lock (FrameLock[FrameType])
|
||||||
|
{
|
||||||
|
AccumulatedFrameTime[FrameType] += ElapsedFrameTime;
|
||||||
|
|
||||||
FramesRendered[FrameType]++;
|
FramesRendered[FrameType]++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public double GetSystemFrameRate()
|
public double GetSystemFrameRate()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue