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; };