X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=pv%2Fsession.cpp;h=4bc510e9fa538d5eb3a848fde39ea4604520512d;hb=9e8f0e503e0c79c3765947ba5abae0ffc76850c4;hp=e2b6dd7174a0bcdfcadef6ab0041454ab4a2a8c0;hpb=86123e2e4711e67f2246998b7172413199f231f4;p=pulseview.git diff --git a/pv/session.cpp b/pv/session.cpp index e2b6dd71..4bc510e9 100644 --- a/pv/session.cpp +++ b/pv/session.cpp @@ -142,7 +142,16 @@ void Session::set_device(shared_ptr device) // Remove all traces signals_.clear(); + cur_logic_segment_.reset(); + + for (auto entry : cur_analog_segments_) { + shared_ptr(entry.first).reset(); + shared_ptr(entry.second).reset(); + } + + logic_data_.reset(); decode_traces_.clear(); + signals_changed(); device_ = std::move(device); @@ -338,7 +347,11 @@ void Session::set_capture_state(capture_state state) void Session::update_signals() { - assert(device_); + if (!device_) { + signals_.clear(); + logic_data_.reset(); + return; + } lock_guard lock(data_mutex_);