X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fsigsession.cpp;h=aadaf45011451bc21bad01045f7781347cd1aaaa;hp=dacf65e56b55df4c8266d603928c86c0ce02a6fc;hb=3045c869ada2e32bf55cbb68633b5213b9b11e28;hpb=c51482b339fbb76e0de042ac3f136a6e5b752b9a diff --git a/pv/sigsession.cpp b/pv/sigsession.cpp index dacf65e5..aadaf450 100644 --- a/pv/sigsession.cpp +++ b/pv/sigsession.cpp @@ -34,6 +34,8 @@ #include +#include + #include #include @@ -193,20 +195,15 @@ boost::shared_ptr SigSession::get_data() return _logic_data; } -void SigSession::add_decoder(srd_decoder *const dec, +bool SigSession::add_decoder(srd_decoder *const dec, std::map > probes, + boost::shared_ptr > probes, GHashTable *options) { + try { lock_guard lock(_signals_mutex); - if (!_decode_traces.empty()) { - qDebug("Currently only one decode trace can be added " - "at once"); - _decode_traces.clear(); - } - shared_ptr decoder( new data::Decoder(dec, probes, options)); shared_ptr d( @@ -214,7 +211,14 @@ void SigSession::add_decoder(srd_decoder *const dec, _decode_traces.size())); _decode_traces.push_back(d); } + catch(std::runtime_error e) + { + return false; + } + signals_changed(); + + return true; } vector< shared_ptr > SigSession::get_decode_signals() const @@ -378,8 +382,7 @@ void SigSession::update_signals(const sr_dev_inst *const sdi) if(sdi) { for (const GSList *l = sdi->probes; l; l = l->next) { - const sr_probe *const probe = - (const sr_probe *)l->data; + sr_probe *const probe = (sr_probe *)l->data; assert(probe); switch(probe->type) {