From dd6a4dd091b87262716db6ece18dc8a8dd77f665 Mon Sep 17 00:00:00 2001 From: Zach Pomerantz Date: Tue, 10 May 2016 16:06:33 -0700 Subject: [PATCH] Make getPaintDelayUsecs threadsafe --- libraries/plugins/src/plugins/DisplayPlugin.cpp | 6 +++++- libraries/plugins/src/plugins/DisplayPlugin.h | 3 ++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/libraries/plugins/src/plugins/DisplayPlugin.cpp b/libraries/plugins/src/plugins/DisplayPlugin.cpp index f52910b952..430da00061 100644 --- a/libraries/plugins/src/plugins/DisplayPlugin.cpp +++ b/libraries/plugins/src/plugins/DisplayPlugin.cpp @@ -25,13 +25,17 @@ void DisplayPlugin::deactivate() { } int64_t DisplayPlugin::getPaintDelayUsecs() const { + std::lock_guard lock(_paintDelayMutex); return _paintDelayTimer.isValid() ? _paintDelayTimer.nsecsElapsed() / NSECS_PER_USEC : 0; } void DisplayPlugin::incrementPresentCount() { #ifdef DEBUG_PAINT_DELAY // Avoid overhead if we are not debugging - _paintDelayTimer.start(); + { + std::lock_guard lock(_paintDelayMutex); + _paintDelayTimer.start(); + } #endif ++_presentedFrameIndex; diff --git a/libraries/plugins/src/plugins/DisplayPlugin.h b/libraries/plugins/src/plugins/DisplayPlugin.h index 1e9b16eeac..3a668f27d7 100644 --- a/libraries/plugins/src/plugins/DisplayPlugin.h +++ b/libraries/plugins/src/plugins/DisplayPlugin.h @@ -161,7 +161,7 @@ public: // Rate at which rendered frames are being skipped virtual float droppedFrameRate() const { return -1.0f; } uint32_t presentCount() const { return _presentedFrameIndex; } - // Time since last call to incrementPresentCount. Only valid if DEBUG_PAINT_DELAY is defined + // Time since last call to incrementPresentCount (only valid if DEBUG_PAINT_DELAY is defined) int64_t getPaintDelayUsecs() const; virtual void cycleDebugOutput() {} @@ -176,6 +176,7 @@ protected: private: std::atomic _presentedFrameIndex; + mutable std::mutex _paintDelayMutex; QElapsedTimer _paintDelayTimer; };