X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=pv%2Fsession.cpp;fp=pv%2Fsession.cpp;h=f53383789f3ff669adb21af9bd7b0bb997c43cd6;hb=999869aa676f7077b7181355eee28e9b025d4cea;hp=fb8ee5fe9a3456dc2533078cdcbdad59b040e36a;hpb=578d073553fa13c8f6939ad4bd7bd774950a33eb;p=pulseview.git diff --git a/pv/session.cpp b/pv/session.cpp index fb8ee5fe..f5338378 100644 --- a/pv/session.cpp +++ b/pv/session.cpp @@ -857,6 +857,28 @@ const vector< shared_ptr > Session::signalbases() const return signalbases_; } +void Session::add_generated_signal(shared_ptr signal) +{ + signalbases_.push_back(signal); + + for (shared_ptr& view : views_) + view->add_signalbase(signal); + + update_signals(); +} + +void Session::remove_generated_signal(shared_ptr signal) +{ + signalbases_.erase(std::remove_if(signalbases_.begin(), signalbases_.end(), + [&](shared_ptr s) { return s == signal; }), + signalbases_.end()); + + for (shared_ptr& view : views_) + view->remove_signalbase(signal); + + update_signals(); +} + bool Session::all_segments_complete(uint32_t segment_id) const { bool all_complete = true; @@ -1106,6 +1128,8 @@ void Session::sample_thread_proc(function error_handler) lock_guard lock(data_mutex_); cur_logic_segment_.reset(); cur_analog_segments_.clear(); + for (shared_ptr sb : signalbases_) + sb->clear_sample_data(); } highest_segment_id_ = -1; frame_began_ = false; @@ -1348,7 +1372,7 @@ void Session::feed_in_frame_end() signal_segment_completed(); } -void Session::feed_in_logic(shared_ptr logic) +void Session::feed_in_logic(shared_ptr logic) { if (logic->data_length() == 0) { qDebug() << "WARNING: Received logic packet with 0 samples."; @@ -1392,7 +1416,7 @@ void Session::feed_in_logic(shared_ptr logic) data_received(); } -void Session::feed_in_analog(shared_ptr analog) +void Session::feed_in_analog(shared_ptr analog) { if (analog->num_samples() == 0) { qDebug() << "WARNING: Received analog packet with 0 samples.";