Skip to content

Commit b62f01c

Browse files
committed
Decouple drift counter time of init with usage
This fixes spurious drift warnings when the drift counter was initialized, but timers that use it not yet started.
1 parent 06f6b34 commit b62f01c

File tree

2 files changed

+3
-2
lines changed

2 files changed

+3
-2
lines changed

driftcounter.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ std::chrono::milliseconds DriftCounter::getDrift() const
2525
{
2626
auto now = std::chrono::steady_clock::now();
2727

28-
const auto last_update_copy = last_update;
28+
const auto last_update_copy = last_update.value_or(std::chrono::steady_clock::now());
2929

3030
if (last_update_copy + (std::chrono::milliseconds(HEARTBEAT_INTERVAL) * 2 ) < now)
3131
return std::chrono::duration_cast<std::chrono::milliseconds>(now - last_update_copy);

driftcounter.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
#include <chrono>
55
#include <array>
6+
#include <optional>
67

78
/**
89
* @brief The DriftCounter class allows measuring drift in threads.
@@ -12,7 +13,7 @@
1213
*/
1314
class DriftCounter
1415
{
15-
std::chrono::time_point<std::chrono::steady_clock> last_update = std::chrono::steady_clock::now();
16+
std::optional<std::chrono::time_point<std::chrono::steady_clock>> last_update;
1617
std::chrono::milliseconds last_drift = std::chrono::milliseconds(0);
1718
std::array<std::chrono::milliseconds, 16> many_drifts{};
1819
unsigned int many_index = 0;

0 commit comments

Comments
 (0)