X-Git-Url: http://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fdata%2Fsignalbase.cpp;fp=pv%2Fdata%2Fsignalbase.cpp;h=104243b11db8a168ef24d1e9ed021f4c949958d7;hp=274de1a12667350a2acb1ad5ca7f2959958610b3;hb=144e72c9ec677e7df35d37d7de6e8a18bb3f2ba1;hpb=eb8f22c04d1f5b7f9c831f9bec0778d3f3583626 diff --git a/pv/data/signalbase.cpp b/pv/data/signalbase.cpp index 274de1a1..104243b1 100644 --- a/pv/data/signalbase.cpp +++ b/pv/data/signalbase.cpp @@ -676,6 +676,7 @@ void SignalBase::convert_single_segment_range(shared_ptr asegment lsegment->append_payload(logic->data_pointer(), logic->data_length()); samples_added(lsegment->segment_id(), i, i + ConversionBlockSize); + i += ConversionBlockSize; } @@ -778,6 +779,7 @@ void SignalBase::conversion_thread_proc() // Only advance to next segment if the current input segment is complete if (asegment->is_complete() && analog_data->analog_segments().size() > logic_data->logic_segments().size()) { + // There are more segments to process segment_id++; @@ -794,12 +796,12 @@ void SignalBase::conversion_thread_proc() logic_data->push_segment(new_segment); lsegment = logic_data->logic_segments().back(); - } else { - // No more samples/segments to process, wait for data or interrupt - if (!conversion_interrupt_) { - unique_lock input_lock(conversion_input_mutex_); - conversion_input_cond_.wait(input_lock); - } + } + + // No more samples/segments to process, wait for data or interrupt + if (!conversion_interrupt_) { + unique_lock input_lock(conversion_input_mutex_); + conversion_input_cond_.wait(input_lock); } } while (!conversion_interrupt_); } @@ -815,11 +817,11 @@ void SignalBase::start_conversion(bool delayed_start) if (converted_data_) converted_data_->clear(); + samples_cleared(); conversion_interrupt_ = false; - conversion_thread_ = std::thread( - &SignalBase::conversion_thread_proc, this); + conversion_thread_ = std::thread(&SignalBase::conversion_thread_proc, this); } void SignalBase::stop_conversion()