+void SigSession::add_decoder(srd_decoder *const dec,
+ std::map<const srd_probe*,
+ boost::shared_ptr<view::Signal> > probes,
+ GHashTable *options)
+{
+ {
+ lock_guard<mutex> lock(_signals_mutex);
+
+ if (!_decode_traces.empty()) {
+ qDebug("Currently only one decode trace can be added "
+ "at once");
+ _decode_traces.clear();
+ }
+
+ shared_ptr<data::Decoder> decoder(
+ new data::Decoder(dec, probes, options));
+ shared_ptr<view::DecodeSignal> d(
+ new view::DecodeSignal(*this, decoder,
+ _decode_traces.size()));
+ _decode_traces.push_back(d);
+ }
+ signals_changed();
+}
+
+vector< shared_ptr<view::DecodeSignal> > SigSession::get_decode_signals() const
+{
+ lock_guard<mutex> lock(_signals_mutex);
+ return _decode_traces;
+}
+
+void SigSession::remove_decode_signal(view::DecodeSignal *signal)
+{
+ for (vector< shared_ptr<view::DecodeSignal> >::iterator i =
+ _decode_traces.begin();
+ i != _decode_traces.end();
+ i++)
+ if ((*i).get() == signal)
+ {
+ _decode_traces.erase(i);
+ signals_changed();
+ return;
+ }
+}
+