From f57046a4783193e6ea041ec1b09f4cee57c06d52 Mon Sep 17 00:00:00 2001 From: Andrea Bondavalli Date: Mon, 2 Mar 2020 19:06:21 +0100 Subject: [PATCH] fix: use steady_clock instead of high_resolution_clock to avoid being affected by date/time changes --- daemon/session_manager.cpp | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/daemon/session_manager.cpp b/daemon/session_manager.cpp index 724842d..b3025ae 100644 --- a/daemon/session_manager.cpp +++ b/daemon/session_manager.cpp @@ -33,6 +33,7 @@ #include "log.hpp" #include "session_manager.hpp" + static uint8_t get_codec_word_lenght(const std::string& codec) { if (codec == "L16") { return 2; @@ -902,16 +903,15 @@ size_t SessionManager::process_sap() { return sdp_len_sum; } + +using namespace std::chrono; +using second_t = duration >; + bool SessionManager::worker() { - - using clock_ = std::chrono::high_resolution_clock; - using second_t = std::chrono::duration >; - using timepoint_t = std::chrono::time_point; - TPTPConfig ptp_config; TPTPStatus ptp_status; - timepoint_t sap_timepoint = clock_::now(); - timepoint_t ptp_timepoint = clock_::now(); + auto sap_timepoint = steady_clock::now(); + auto ptp_timepoint = steady_clock::now(); int sap_interval = 1; int ptp_interval = 0; @@ -922,9 +922,9 @@ bool SessionManager::worker() { while (running_) { // check if it's time to update the PTP status - if (std::chrono::duration_cast (clock_::now() - ptp_timepoint).count() > - ptp_interval) { - ptp_timepoint = clock_::now(); + if ((duration_cast(steady_clock::now() - ptp_timepoint).count()) + > ptp_interval) { + ptp_timepoint = steady_clock::now(); if (driver_->get_ptp_config(ptp_config) || driver_->get_ptp_status(ptp_status)) { BOOST_LOG_TRIVIAL(error) @@ -972,10 +972,10 @@ bool SessionManager::worker() { ptp_interval = 10; } - // check if it's time to send SAP announcements - if (std::chrono::duration_cast (clock_::now() - sap_timepoint).count() > - sap_interval) { - sap_timepoint = clock_::now(); + // check if it's time to send sap announcements + if ((duration_cast(steady_clock::now() - sap_timepoint).count()) + > sap_interval) { + sap_timepoint = steady_clock::now(); auto sdp_len_sum = process_sap();