X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=pv%2Fdata%2Fdecoderstack.cpp;h=7bd5e6e6c2431d4e182fbfe051aa2dc08357a577;hb=9a0cd293620ae082a46ee5f2e53bf700301f9c87;hp=bc26f9fccf1a93a2acaa38bea1a86621bca53687;hpb=613d097c5af2d12ffd68e2dfab309b518edca1a6;p=pulseview.git diff --git a/pv/data/decoderstack.cpp b/pv/data/decoderstack.cpp index bc26f9f..7bd5e6e 100644 --- a/pv/data/decoderstack.cpp +++ b/pv/data/decoderstack.cpp @@ -47,7 +47,8 @@ const int64_t DecoderStack::DecodeChunkLength = 4096; mutex DecoderStack::_global_decode_mutex; -DecoderStack::DecoderStack(const srd_decoder *const dec) +DecoderStack::DecoderStack(const srd_decoder *const dec) : + _samples_decoded(0) { _stack.push_back(shared_ptr( new decode::Decoder(dec))); @@ -87,6 +88,12 @@ void DecoderStack::remove(int index) _stack.erase(iter); } +int64_t DecoderStack::samples_decoded() const +{ + lock_guard decode_lock(_mutex); + return _samples_decoded; +} + const vector< shared_ptr > DecoderStack::annotations() const { @@ -108,6 +115,8 @@ void DecoderStack::begin_decode() _decode_thread.interrupt(); _decode_thread.join(); + _samples_decoded = 0; + _annotations.clear(); // We get the logic data of the first probe in the list. @@ -116,7 +125,7 @@ void DecoderStack::begin_decode() BOOST_FOREACH (const shared_ptr &dec, _stack) if (dec && !dec->probes().empty() && ((logic_signal = (*dec->probes().begin()).second)) && - ((data = logic_signal->data()))) + ((data = logic_signal->logic_data()))) break; if (!data) @@ -200,6 +209,11 @@ void DecoderStack::decode_proc(shared_ptr data) _error_message = tr("Failed to initialise decoder"); break; } + + { + lock_guard lock(_mutex); + _samples_decoded = chunk_end; + } } // Destroy the session