X-Git-Url: http://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fdata%2Fdecoder.cpp;fp=pv%2Fdata%2Fdecoder.cpp;h=133fcd19d44b1f9a0c9fec43b94283a418628cf9;hp=8a84fd4d8f4e9032a3876eaeb9ee405587fa9602;hb=fe89c96185dba8ccf02b6b3d0994c2e149198c73;hpb=b6b267bba9d55d23fe5c3537e4785238d4377ad7;ds=sidebyside diff --git a/pv/data/decoder.cpp b/pv/data/decoder.cpp index 8a84fd4d..133fcd19 100644 --- a/pv/data/decoder.cpp +++ b/pv/data/decoder.cpp @@ -43,6 +43,8 @@ const double Decoder::DecodeMargin = 1.0; const double Decoder::DecodeThreshold = 0.2; const int64_t Decoder::DecodeChunkLength = 4096; +mutex Decoder::_global_decode_mutex; + Decoder::Decoder(const srd_decoder *const dec, std::map > probes, @@ -191,6 +193,8 @@ void Decoder::decode_proc(shared_ptr data) !this_thread::interruption_requested() && i < sample_count; i += DecodeChunkLength) { + lock_guard decode_lock(_global_decode_mutex); + const int64_t chunk_end = min( i + DecodeChunkLength, sample_count); snapshot->get_samples(chunk, i, chunk_end);