X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=pv%2Fsigsession.cpp;h=b5387877dda0a73a513f7cb5f066e030f3b17539;hb=6d483b8b51b4efceacf2f48776af33550bf5d29e;hp=a2f44dab1aaf01a462ef8383f83759f5b8147925;hpb=8d3e0764def48fdf19dc9100c87bbb42da5a9d6d;p=pulseview.git diff --git a/pv/sigsession.cpp b/pv/sigsession.cpp index a2f44da..b538787 100644 --- a/pv/sigsession.cpp +++ b/pv/sigsession.cpp @@ -75,7 +75,8 @@ SigSession::~SigSession() { stop_capture(); - _sampling_thread.join(); + if (_sampling_thread.joinable()) + _sampling_thread.join(); if (_dev_inst) _device_manager.release_device(_dev_inst); @@ -200,7 +201,8 @@ void SigSession::stop_capture() sr_session_stop(); // Check that sampling stopped - _sampling_thread.join(); + if (_sampling_thread.joinable()) + _sampling_thread.join(); } set< shared_ptr > SigSession::get_data() const @@ -442,7 +444,7 @@ void SigSession::update_signals(shared_ptr dev_inst) switch(probe->type) { case SR_PROBE_LOGIC: signal = shared_ptr( - new view::LogicSignal(*this, dev_inst, + new view::LogicSignal(dev_inst, probe, _logic_data)); break; @@ -451,7 +453,7 @@ void SigSession::update_signals(shared_ptr dev_inst) shared_ptr data( new data::Analog()); signal = shared_ptr( - new view::AnalogSignal(*this, dev_inst, + new view::AnalogSignal(dev_inst, probe, data)); break; } @@ -645,7 +647,7 @@ void SigSession::feed_in_logic(const sr_datafeed_logic &logic) // Create a new data snapshot _cur_logic_snapshot = shared_ptr( - new data::LogicSnapshot(logic)); + new data::LogicSnapshot(logic, _dev_inst->get_sample_limit())); _logic_data->push_snapshot(_cur_logic_snapshot); } else @@ -687,7 +689,7 @@ void SigSession::feed_in_analog(const sr_datafeed_analog &analog) // Create a snapshot, keep it in the maps of probes snapshot = shared_ptr( - new data::AnalogSnapshot()); + new data::AnalogSnapshot(_dev_inst->get_sample_limit())); _cur_analog_snapshots[probe] = snapshot; // Find the annalog data associated with the probe