projects
/
pulseview.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Session: Make sure all data is deleted before changing devices
[pulseview.git]
/
pv
/
session.cpp
diff --git
a/pv/session.cpp
b/pv/session.cpp
index e2b6dd7174a0bcdfcadef6ab0041454ab4a2a8c0..4bc510e9fa538d5eb3a848fde39ea4604520512d 100644
(file)
--- a/
pv/session.cpp
+++ b/
pv/session.cpp
@@
-142,7
+142,16
@@
void Session::set_device(shared_ptr<devices::Device> device)
// Remove all traces
signals_.clear();
// Remove all traces
signals_.clear();
+ cur_logic_segment_.reset();
+
+ for (auto entry : cur_analog_segments_) {
+ shared_ptr<sigrok::Channel>(entry.first).reset();
+ shared_ptr<data::AnalogSegment>(entry.second).reset();
+ }
+
+ logic_data_.reset();
decode_traces_.clear();
decode_traces_.clear();
+
signals_changed();
device_ = std::move(device);
signals_changed();
device_ = std::move(device);
@@
-338,7
+347,11
@@
void Session::set_capture_state(capture_state state)
void Session::update_signals()
{
void Session::update_signals()
{
- assert(device_);
+ if (!device_) {
+ signals_.clear();
+ logic_data_.reset();
+ return;
+ }
lock_guard<recursive_mutex> lock(data_mutex_);
lock_guard<recursive_mutex> lock(data_mutex_);