X-Git-Url: http://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fsession.cpp;fp=pv%2Fsession.cpp;h=85b6c0b4968795666cb422e2919afb892eb58fe8;hp=f53383789f3ff669adb21af9bd7b0bb997c43cd6;hb=f9a0fd83226d97af7458d8c9dac0b88c83a54d29;hpb=999869aa676f7077b7181355eee28e9b025d4cea diff --git a/pv/session.cpp b/pv/session.cpp index f5338378..85b6c0b4 100644 --- a/pv/session.cpp +++ b/pv/session.cpp @@ -115,6 +115,7 @@ namespace pv { shared_ptr Session::sr_context; Session::Session(DeviceManager &device_manager, QString name) : + shutting_down_(false), device_manager_(device_manager), default_name_(name), name_(name), @@ -126,6 +127,8 @@ Session::Session(DeviceManager &device_manager, QString name) : Session::~Session() { + shutting_down_ = true; + // Stop and join to the thread stop_capture(); } @@ -869,6 +872,9 @@ void Session::add_generated_signal(shared_ptr signal) void Session::remove_generated_signal(shared_ptr signal) { + if (shutting_down_) + return; + signalbases_.erase(std::remove_if(signalbases_.begin(), signalbases_.end(), [&](shared_ptr s) { return s == signal; }), signalbases_.end()); @@ -916,6 +922,9 @@ shared_ptr Session::add_decode_signal() void Session::remove_decode_signal(shared_ptr signal) { + if (shutting_down_) + return; + signalbases_.erase(std::remove_if(signalbases_.begin(), signalbases_.end(), [&](shared_ptr s) { return s == signal; }), signalbases_.end());