diff options
| author | Sam Belliveau <sam.belliveau@gmail.com> | 2022-12-30 14:56:08 -0500 |
|---|---|---|
| committer | Admiral H. Curtiss <pikachu025@gmail.com> | 2023-01-06 20:27:25 +0100 |
| commit | bc46089ab0ca7963ca3b5507969a3df0f2afca6c (patch) | |
| tree | f07ae2bccf2c7096b467175b0fc04b03aec1ac58 /Source/Core/VideoCommon/PerformanceTracker.cpp | |
| parent | 9143eb00fb167e14dfb2d64a959df3fb8d8f0f55 (diff) | |
PerformanceTracker: Use shared_mutex instead of mutex so multiple threads can read at the same time.
Diffstat (limited to 'Source/Core/VideoCommon/PerformanceTracker.cpp')
| -rw-r--r-- | Source/Core/VideoCommon/PerformanceTracker.cpp | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/Source/Core/VideoCommon/PerformanceTracker.cpp b/Source/Core/VideoCommon/PerformanceTracker.cpp index ffde157883..305fb35598 100644 --- a/Source/Core/VideoCommon/PerformanceTracker.cpp +++ b/Source/Core/VideoCommon/PerformanceTracker.cpp @@ -5,8 +5,10 @@ #include <algorithm> #include <cmath> -#include <implot.h> #include <iomanip> +#include <mutex> + +#include <implot.h> #include "Common/CommonTypes.h" #include "Common/FileUtil.h" @@ -36,7 +38,7 @@ PerformanceTracker::~PerformanceTracker() void PerformanceTracker::Reset() { - std::lock_guard lock{m_mutex}; + std::unique_lock lock{m_mutex}; QueueClear(); m_last_time = Clock::now(); @@ -47,7 +49,7 @@ void PerformanceTracker::Reset() void PerformanceTracker::Count() { - std::lock_guard lock{m_mutex}; + std::unique_lock lock{m_mutex}; if (m_paused) return; @@ -97,19 +99,19 @@ DT PerformanceTracker::GetSampleWindow() const double PerformanceTracker::GetHzAvg() const { - std::lock_guard lock{m_mutex}; + std::shared_lock lock{m_mutex}; return m_hz_avg; } DT PerformanceTracker::GetDtAvg() const { - std::lock_guard lock{m_mutex}; + std::shared_lock lock{m_mutex}; return m_dt_avg; } DT PerformanceTracker::GetDtStd() const { - std::lock_guard lock{m_mutex}; + std::unique_lock lock{m_mutex}; if (m_dt_std) return *m_dt_std; @@ -130,7 +132,7 @@ DT PerformanceTracker::GetDtStd() const DT PerformanceTracker::GetLastRawDt() const { - std::lock_guard lock{m_mutex}; + std::shared_lock lock{m_mutex}; if (QueueEmpty()) return DT::zero(); @@ -142,7 +144,7 @@ void PerformanceTracker::ImPlotPlotLines(const char* label) const { static std::array<float, MAX_DT_QUEUE_SIZE + 2> x, y; - std::lock_guard lock{m_mutex}; + std::shared_lock lock{m_mutex}; if (QueueEmpty()) return; @@ -238,7 +240,7 @@ void PerformanceTracker::LogRenderTimeToFile(DT val) void PerformanceTracker::SetPaused(bool paused) { - std::lock_guard lock{m_mutex}; + std::unique_lock lock{m_mutex}; m_paused = paused; if (m_paused) |
