X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=pv%2Fdata%2Fdecoderstack.cpp;h=d6fa17cafe8b6780239be558eeec88486923c1be;hb=5dfeb70fc60f1c4752697d8ad6f80e1415213197;hp=bc26f9fccf1a93a2acaa38bea1a86621bca53687;hpb=5069084a51b248fceaa123f451bad3d8fb01d2fb;p=pulseview.git diff --git a/pv/data/decoderstack.cpp b/pv/data/decoderstack.cpp index bc26f9f..d6fa17c 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. @@ -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