X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=pv%2Fdata%2Fdecoder.cpp;h=923140397ef528d02b9bb2ea84f2849f2d8573d0;hb=3045c869ada2e32bf55cbb68633b5213b9b11e28;hp=292430b6f0969290d206258bc2859fa10b0f041e;hpb=e92cd4e4cddac2639c1a5e278124b5bb22ace10f;p=pulseview.git diff --git a/pv/data/decoder.cpp b/pv/data/decoder.cpp index 292430b..9231403 100644 --- a/pv/data/decoder.cpp +++ b/pv/data/decoder.cpp @@ -45,7 +45,7 @@ const int64_t Decoder::DecodeChunkLength = 4096; Decoder::Decoder(const srd_decoder *const dec, std::map > probes, + boost::shared_ptr > probes, GHashTable *options) : _decoder(dec), _probes(probes), @@ -65,6 +65,9 @@ Decoder::~Decoder() _decode_thread.join(); g_hash_table_destroy(_options); + + if (_session) + srd_session_destroy(_session); } const srd_decoder* Decoder::get_decoder() const @@ -90,12 +93,9 @@ void Decoder::begin_decode() // We get the logic data of the first probe in the list. // This works because we are currently assuming all // LogicSignals have the same data/snapshot - shared_ptr sig = (*_probes.begin()).second; + shared_ptr sig = (*_probes.begin()).second; assert(sig); - const pv::view::LogicSignal *const l = - dynamic_cast(sig.get()); - assert(l); - shared_ptr data = l->data(); + shared_ptr data = sig->data(); _decode_thread = boost::thread(&Decoder::decode_proc, this, data); @@ -136,7 +136,7 @@ bool Decoder::init_decoder() GHashTable *probes = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, (GDestroyNotify)g_variant_unref); - for(map >:: + for(map >:: const_iterator i = _probes.begin(); i != _probes.end(); i++) {