From 9aaebe56cf357cedce5fb7fa73105a1a27206a9c Mon Sep 17 00:00:00 2001 From: dreamsource-tai Date: Mon, 29 Jul 2024 17:10:23 +0800 Subject: [PATCH] get a right capture time for logic with loop mode --- DSView/pv/sigsession.cpp | 3 ++- DSView/pv/sigsession.h | 5 +++++ DSView/pv/toolbars/samplingbar.cpp | 2 ++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/DSView/pv/sigsession.cpp b/DSView/pv/sigsession.cpp index e6ed8cb7..1ad7cc42 100644 --- a/DSView/pv/sigsession.cpp +++ b/DSView/pv/sigsession.cpp @@ -104,6 +104,7 @@ namespace pv _is_triged = false; _dso_status_valid = false; _is_task_end = false; + _capture_work_time = 0; _data_list.push_back(new SessionData()); _data_list.push_back(new SessionData()); @@ -1476,7 +1477,7 @@ namespace pv if (mode == LOGIC){ auto logic_data = _capture_data->get_logic(); if (is_loop_mode() && logic_data->get_loop_offset() > 0){ - uint64_t milliseconds = logic_data->get_ring_sample_count() / 1000000; + uint64_t milliseconds = _capture_work_time / 1000000; QDateTime sessionTime = QDateTime::currentDateTime(); sessionTime = sessionTime.addMSecs(-milliseconds); set_session_time(sessionTime); diff --git a/DSView/pv/sigsession.h b/DSView/pv/sigsession.h index bfbba655..3f000e31 100644 --- a/DSView/pv/sigsession.h +++ b/DSView/pv/sigsession.h @@ -455,6 +455,10 @@ public: void ProcessPowerEvent(bool bEnterSleep); + inline void set_capture_work_time(uint64_t tm){ + _capture_work_time = tm; + } + private: void set_cur_samplelimits(uint64_t samplelimits); void set_cur_snap_samplerate(uint64_t samplerate); @@ -623,6 +627,7 @@ private: IDecoderPannel *_decoder_pannel; sr_status _dso_status; bool _dso_status_valid; + uint64_t _capture_work_time; private: // TODO: This should not be necessary. Multiple concurrent diff --git a/DSView/pv/toolbars/samplingbar.cpp b/DSView/pv/toolbars/samplingbar.cpp index 7b3cd6d5..d82a3b5b 100644 --- a/DSView/pv/toolbars/samplingbar.cpp +++ b/DSView/pv/toolbars/samplingbar.cpp @@ -792,6 +792,8 @@ namespace pv _sample_rate.currentIndex()) .value(); + _session->set_capture_work_time((uint64_t)sample_duration); + if (_device_agent->have_instance()) { if (sample_rate != _device_agent->get_sample_rate())