From 9550ea1fdcfc24c03023ea5e22cb2e0dd22bc316 Mon Sep 17 00:00:00 2001 From: Eberhard Graether Date: Fri, 8 Jul 2016 14:25:22 +0200 Subject: [PATCH] delta time for loader --- src/lib/utility/TimePoint.cpp | 10 ++++++++++ src/lib/utility/TimePoint.h | 6 +++++- src/lib/utility/utility.cpp | 2 +- src/lib_gui/qt/view/QtViewOverlay.cpp | 12 +++++++++++- src/lib_gui/qt/view/QtViewOverlay.h | 3 +++ 5 files changed, 30 insertions(+), 3 deletions(-) diff --git a/src/lib/utility/TimePoint.cpp b/src/lib/utility/TimePoint.cpp index e91f8046..a33e2caf 100644 --- a/src/lib/utility/TimePoint.cpp +++ b/src/lib/utility/TimePoint.cpp @@ -24,6 +24,11 @@ TimePoint::TimePoint(std::string s) } } +TimePoint TimePoint::now() +{ + return TimePoint(boost::posix_time::microsec_clock::local_time()); +} + std::string TimePoint::toString() const { std::stringstream stream; @@ -32,4 +37,9 @@ std::string TimePoint::toString() const stream.imbue(std::locale(std::locale::classic(), facet)); stream << m_time; return stream.str(); +} + +size_t TimePoint::deltaMS(const TimePoint& other) const +{ + return (m_time - other.m_time).total_milliseconds(); } \ No newline at end of file diff --git a/src/lib/utility/TimePoint.h b/src/lib/utility/TimePoint.h index b0acf6e0..b6f1a86d 100644 --- a/src/lib/utility/TimePoint.h +++ b/src/lib/utility/TimePoint.h @@ -11,6 +11,8 @@ public: //TimePoint(time_t t); TimePoint(std::string s); + static TimePoint now(); + std::string toString() const; inline bool operator==(const TimePoint& rhs){ return m_time == rhs.m_time; } @@ -20,7 +22,9 @@ public: inline bool operator<=(const TimePoint& rhs){ return m_time <= rhs.m_time; } inline bool operator>=(const TimePoint& rhs){ return m_time >= rhs.m_time; } - inline float operator-(const TimePoint& rhs){ return (m_time - rhs.m_time).total_milliseconds() / 1000.0f; } + inline float operator-(const TimePoint& rhs){ return deltaMS(rhs) / 1000.0f; } + + size_t deltaMS(const TimePoint& other) const; private: boost::posix_time::ptime m_time; diff --git a/src/lib/utility/utility.cpp b/src/lib/utility/utility.cpp index 59ae3123..2d7513a3 100644 --- a/src/lib/utility/utility.cpp +++ b/src/lib/utility/utility.cpp @@ -3,7 +3,7 @@ TimePoint utility::durationStart() { - return TimePoint(boost::posix_time::microsec_clock::local_time()); + return TimePoint::now(); } float utility::duration(const TimePoint& start) diff --git a/src/lib_gui/qt/view/QtViewOverlay.cpp b/src/lib_gui/qt/view/QtViewOverlay.cpp index 3067c241..82e9d675 100644 --- a/src/lib_gui/qt/view/QtViewOverlay.cpp +++ b/src/lib_gui/qt/view/QtViewOverlay.cpp @@ -34,6 +34,7 @@ QtOverlay::QtOverlay(QWidget* parent) void QtOverlay::start() { + m_timePoint = TimePoint::now(); m_timer->start(FRAME_DELAY_MS); show(); } @@ -46,7 +47,16 @@ void QtOverlay::stop() void QtOverlay::animate() { - m_count += FRAME_DELAY_MS; + TimePoint t = TimePoint::now(); + size_t dt = t.deltaMS(m_timePoint); + + if (dt < 5) + { + return; + } + + m_timePoint = t; + m_count += dt; QPoint center = geometry().center(); update(QRect(center.x() - m_size / 2, center.y() - m_size / 2, m_size, m_size)); diff --git a/src/lib_gui/qt/view/QtViewOverlay.h b/src/lib_gui/qt/view/QtViewOverlay.h index 215f911d..64184b8a 100644 --- a/src/lib_gui/qt/view/QtViewOverlay.h +++ b/src/lib_gui/qt/view/QtViewOverlay.h @@ -4,6 +4,7 @@ #include #include "qt/utility/QtThreadedFunctor.h" +#include "utility/TimePoint.h" class QTimer; @@ -49,6 +50,8 @@ private: size_t m_count; size_t m_size; + + TimePoint m_timePoint; };