X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=pv%2Fsession.cpp;h=07917e582ff2846d537fecaf755dfa4e125daae7;hb=132a5c6d4b3c220d1cb6d942bf9d7e8b180ab1c3;hp=00eb7ad0142716e6eac7aaf4749f694ecd9cdfe5;hpb=3083cda853bd12d73b741c3bc97b70f5d395a15a;p=pulseview.git diff --git a/pv/session.cpp b/pv/session.cpp index 00eb7ad..07917e5 100644 --- a/pv/session.cpp +++ b/pv/session.cpp @@ -53,6 +53,7 @@ #ifdef ENABLE_DECODE #include +#include "data/decodesignal.hpp" #endif using std::bad_alloc; @@ -664,37 +665,19 @@ bool Session::add_decoder(srd_decoder *const dec) // Create the decoder decoder_stack = make_shared(*this, dec); - // Make a list of all the channels - vector all_channels; - for (const GSList *i = dec->channels; i; i = i->next) - all_channels.push_back((const srd_channel*)i->data); - for (const GSList *i = dec->opt_channels; i; i = i->next) - all_channels.push_back((const srd_channel*)i->data); - - // Auto select the initial channels - for (const srd_channel *pdch : all_channels) - for (shared_ptr b : signalbases_) { - if (b->logic_data()) { - if (QString::fromUtf8(pdch->name).toLower(). - contains(b->name().toLower())) - channels[pdch] = b; - } - } - assert(decoder_stack); assert(!decoder_stack->stack().empty()); assert(decoder_stack->stack().front()); decoder_stack->stack().front()->set_channels(channels); // Create the decode signal - shared_ptr signalbase = - make_shared(nullptr, data::SignalBase::DecodeChannel); + shared_ptr signal = + make_shared(decoder_stack, signalbases_); - signalbase->set_decoder_stack(decoder_stack); - signalbases_.insert(signalbase); + signalbases_.insert(signal); for (shared_ptr view : views_) - view->add_decode_signal(signalbase); + view->add_decode_signal(signal); } catch (runtime_error e) { return false; } @@ -707,12 +690,12 @@ bool Session::add_decoder(srd_decoder *const dec) return true; } -void Session::remove_decode_signal(shared_ptr signalbase) +void Session::remove_decode_signal(shared_ptr signal) { - signalbases_.erase(signalbase); + signalbases_.erase(signal); for (shared_ptr view : views_) - view->remove_decode_signal(signalbase); + view->remove_decode_signal(signal); signals_changed(); }