X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=pv%2Fsession.cpp;h=99dca2157e96641ed0fdbf7dd3100749dd35f963;hb=04394ded8776d2163c1e815ccc8170b81d76b028;hp=9d00a51032c649455b15eceab0f7dfdead57e335;hpb=cbd2a2de848f957507096785d3be1cc97d30df9a;p=pulseview.git diff --git a/pv/session.cpp b/pv/session.cpp index 9d00a51..99dca21 100644 --- a/pv/session.cpp +++ b/pv/session.cpp @@ -275,7 +275,7 @@ const unordered_set< shared_ptr > Session::signals() const #ifdef ENABLE_DECODE bool Session::add_decoder(srd_decoder *const dec) { - map > channels; + map > channels; shared_ptr decoder_stack; try { @@ -294,13 +294,12 @@ bool Session::add_decoder(srd_decoder *const dec) // Auto select the initial channels for (const srd_channel *pdch : all_channels) - for (shared_ptr s : signals_) { - shared_ptr l = - dynamic_pointer_cast(s); - if (l && QString::fromUtf8(pdch->name). - toLower().contains( - s->base()->name().toLower())) - channels[pdch] = l; + for (shared_ptr b : signalbases_) { + if (b->type() == ChannelType::LOGIC) { + if (QString::fromUtf8(pdch->name).toLower(). + contains(b->name().toLower())) + channels[pdch] = b; + } } assert(decoder_stack); @@ -417,11 +416,6 @@ void Session::update_signals() if (iter != prev_sigs.end()) { // Copy the signal from the old set to the new signal = *iter; - auto logic_signal = dynamic_pointer_cast< - view::LogicSignal>(signal); - if (logic_signal) - logic_signal->set_logic_data( - logic_data_); } else { // Create a new signal signalbase = shared_ptr( @@ -429,9 +423,10 @@ void Session::update_signals() switch(channel->type()->id()) { case SR_CHANNEL_LOGIC: + signalbase->set_data(logic_data_); signal = shared_ptr( new view::LogicSignal(*this, - device_, signalbase, logic_data_)); + device_, signalbase)); all_signal_data_.insert(logic_data_); signalbases_.insert(signalbase); break;