X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fsession.cpp;h=a61224048b018701cad13b891db4baf00a50a8b7;hp=9c3a2c259e2a635f2eed79f5a8a607a9c33d490c;hb=0aa57689a8abc7eb313de50774b8d0cf271bc61f;hpb=bf0edd2b0cbb5f4bd5d69b0f00bcea7d037e2287 diff --git a/pv/session.cpp b/pv/session.cpp index 9c3a2c25..a6122404 100644 --- a/pv/session.cpp +++ b/pv/session.cpp @@ -299,7 +299,7 @@ bool Session::add_decoder(srd_decoder *const dec) dynamic_pointer_cast(s); if (l && QString::fromUtf8(pdch->name). toLower().contains( - s->channel()->name().toLower())) + s->base()->name().toLower())) channels[pdch] = l; } @@ -412,16 +412,11 @@ void Session::update_signals() const auto iter = std::find_if( prev_sigs.cbegin(), prev_sigs.cend(), [&](const shared_ptr &s) { - return s->channel()->channel() == channel; + return s->base()->channel() == channel; }); 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,20 +424,21 @@ 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; case SR_CHANNEL_ANALOG: { - shared_ptr data( - new data::Analog()); + shared_ptr data(new data::Analog()); + signalbase->set_data(data); signal = shared_ptr( new view::AnalogSignal( - *this, signalbase, data)); + *this, signalbase)); all_signal_data_.insert(data); signalbases_.insert(signalbase); break; @@ -462,7 +458,7 @@ void Session::update_signals() signals_changed(); } -shared_ptr Session::signal_from_channel( +shared_ptr Session::signalbase_from_channel( shared_ptr channel) const { for (shared_ptr sig : signalbases_) { @@ -633,12 +629,10 @@ void Session::feed_in_analog(shared_ptr analog) cur_analog_segments_[channel] = segment; // Find the analog data associated with the channel - shared_ptr sig = - dynamic_pointer_cast( - signal_from_channel(channel)); - assert(sig); + shared_ptr base = signalbase_from_channel(channel); + assert(base); - shared_ptr data(sig->analog_data()); + shared_ptr data(base->analog_data()); assert(data); // Push the segment into the analog data.