X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fdata%2Fdecodesignal.cpp;h=65436002c760681a8b1b8117f15c74932479f4a2;hp=0e813d38b7d97b30c7b29d49edf44bc45222cb4a;hb=1ae18301848d741a7a17888af9e1b10171a6ccc4;hpb=b82908abf7353c7401cd67e82325922960d5d546;ds=sidebyside diff --git a/pv/data/decodesignal.cpp b/pv/data/decodesignal.cpp index 0e813d38..65436002 100644 --- a/pv/data/decodesignal.cpp +++ b/pv/data/decodesignal.cpp @@ -906,6 +906,7 @@ void DecodeSignal::logic_mux_proc() logic_mux_cond_.wait(logic_mux_lock); } } + } while (!logic_mux_interrupt_); } @@ -917,7 +918,8 @@ void DecodeSignal::decode_data( const int64_t chunk_sample_count = DecodeChunkLength / unit_size; for (int64_t i = abs_start_samplenum; - !decode_interrupt_ && (i < (abs_start_samplenum + sample_count)); + error_message_.isEmpty() && !decode_interrupt_ && + (i < (abs_start_samplenum + sample_count)); i += chunk_sample_count) { const int64_t chunk_end = min(i + chunk_sample_count, @@ -934,11 +936,8 @@ void DecodeSignal::decode_data( input_segment->get_samples(i, chunk_end, chunk); if (srd_session_send(srd_session_, i, chunk_end, chunk, - data_size, unit_size) != SRD_OK) { + data_size, unit_size) != SRD_OK) set_error_message(tr("Decoder reported an error")); - delete[] chunk; - break; - } delete[] chunk;