From 67be92f17b9102f23b84ebef8e251542df3ac2a7 Mon Sep 17 00:00:00 2001 From: dreamsourcelabTAI Date: Thu, 11 May 2023 15:44:29 +0800 Subject: [PATCH] fix: Can't show the measure cursor on DSO mode --- DSView/pv/sigsession.cpp | 11 +++++++---- DSView/pv/sigsession.h | 10 +++++++++- DSView/pv/view/viewport.cpp | 2 +- 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/DSView/pv/sigsession.cpp b/DSView/pv/sigsession.cpp index 1aa2bad8..6465ae67 100644 --- a/DSView/pv/sigsession.cpp +++ b/DSView/pv/sigsession.cpp @@ -414,7 +414,8 @@ namespace pv _rt_refresh_time_id = 0; _rt_ck_refresh_time_id = 0; _noData_cnt = 0; - _data_lock = false; + + data_unlock(); // Init data container _capture_data->clear(); @@ -712,6 +713,8 @@ namespace pv exit_capture(); + data_unlock(); + _callback->trigger_message(DSV_MSG_END_COLLECT_WORK); return true; } @@ -981,7 +984,7 @@ namespace pv { ds_lock_guard lock(_data_mutex); - _data_lock = true; + data_lock(); _view_data->get_logic()->init(); clear_all_decode_task2(); @@ -1197,7 +1200,7 @@ namespace pv set_receive_data_len(o.num_samples); if (!_is_instant) - _data_lock = true; + data_lock(); _data_updated = true; } @@ -1627,7 +1630,7 @@ namespace pv void SigSession::feed_timeout() { - _data_lock = false; + data_unlock(); if (!_data_updated) { diff --git a/DSView/pv/sigsession.h b/DSView/pv/sigsession.h index e491ac06..66ec618e 100644 --- a/DSView/pv/sigsession.h +++ b/DSView/pv/sigsession.h @@ -229,7 +229,7 @@ public: uint16_t get_ch_num(int type); - inline bool get_data_lock(){ + inline bool is_data_lock(){ return _data_lock; } @@ -498,6 +498,14 @@ private: void clear_signals(); void on_delay_prop_msg(); + + inline void data_lock(){ + _data_lock = true; + } + + inline void data_unlock(){ + _data_lock = false; + } private: mutable std::mutex _sampling_mutex; diff --git a/DSView/pv/view/viewport.cpp b/DSView/pv/view/viewport.cpp index 0e15bede..17f978ec 100644 --- a/DSView/pv/view/viewport.cpp +++ b/DSView/pv/view/viewport.cpp @@ -1394,7 +1394,7 @@ void Viewport::clear_dso_xm() void Viewport::measure() { - if (_view.session().get_data_lock()) + if (_view.session().is_data_lock()) return; _measure_type = NO_MEASURE;