X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=pv%2Fsession.cpp;h=a1a078788c4e49631e7d00df1ab5e82646a6cbe3;hb=12ea3616767553ee0a615f14bbcb8ec614589e34;hp=2712af1200ab12082bb400c50d0e3f493b0ee5c5;hpb=472a80c58cfdbd37cb00b5ba2ef4bcd923f9b54b;p=pulseview.git diff --git a/pv/session.cpp b/pv/session.cpp index 2712af1..a1a0787 100644 --- a/pv/session.cpp +++ b/pv/session.cpp @@ -620,6 +620,9 @@ const unordered_set< shared_ptr > Session::signalbases() const #ifdef ENABLE_DECODE bool Session::add_decoder(srd_decoder *const dec) { + if (!dec) + return false; + map > channels; shared_ptr decoder_stack; @@ -637,7 +640,7 @@ bool Session::add_decoder(srd_decoder *const dec) // Auto select the initial channels for (const srd_channel *pdch : all_channels) for (shared_ptr b : signalbases_) { - if (b->type() == data::SignalBase::LogicChannel) { + if (b->logic_data()) { if (QString::fromUtf8(pdch->name).toLower(). contains(b->name().toLower())) channels[pdch] = b; @@ -785,6 +788,9 @@ void Session::update_signals() all_signal_data_.insert(logic_data_); signalbase->set_data(logic_data_); + + connect(this, SIGNAL(capture_state_changed(int)), + signalbase.get(), SLOT(on_capture_state_changed(int))); } signal = shared_ptr( @@ -803,6 +809,9 @@ void Session::update_signals() shared_ptr data(new data::Analog()); all_signal_data_.insert(data); signalbase->set_data(data); + + connect(this, SIGNAL(capture_state_changed(int)), + signalbase.get(), SLOT(on_capture_state_changed(int))); } signal = shared_ptr( @@ -962,7 +971,7 @@ void Session::feed_in_logic(shared_ptr logic) // Create a new data segment cur_logic_segment_ = make_shared( - *logic_data_, logic, cur_samplerate_); + *logic_data_, logic->unit_size(), cur_samplerate_); logic_data_->push_segment(cur_logic_segment_); // @todo Putting this here means that only listeners querying @@ -970,11 +979,10 @@ void Session::feed_in_logic(shared_ptr logic) // frame_began is DecoderStack, but in future we need to signal // this after both analog and logic sweeps have begun. frame_began(); - } else { - // Append to the existing data segment - cur_logic_segment_->append_payload(logic); } + cur_logic_segment_->append_payload(logic); + data_received(); }