X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=pv%2Fdata%2Fsignalbase.cpp;h=f421e7609de8f1ccb7bfce95905bec16b62cf7a6;hb=4349dc21e726fe6e9e1fba59f9f06a9bdc718078;hp=26e01d05828858e1e1e1e00df28ee3162f5c3018;hpb=558ad6ceb934ab7406d286c1a4ae08da4aba1448;p=pulseview.git diff --git a/pv/data/signalbase.cpp b/pv/data/signalbase.cpp index 26e01d05..f421e760 100644 --- a/pv/data/signalbase.cpp +++ b/pv/data/signalbase.cpp @@ -542,13 +542,19 @@ void SignalBase::conversion_thread_proc() if (conversion_is_a2l()) { analog_data = dynamic_pointer_cast(data_); - if (analog_data->analog_segments().size() == 0) - return; + if (analog_data->analog_segments().size() == 0) { + unique_lock input_lock(conversion_input_mutex_); + conversion_input_cond_.wait(input_lock); + } } else // Currently, we only handle A2L conversions return; + // If we had to wait for input data, we may have been notified to terminate + if (conversion_interrupt_) + return; + uint32_t segment_id = 0; AnalogSegment *asegment = analog_data->analog_segments().front().get(); @@ -560,7 +566,7 @@ void SignalBase::conversion_thread_proc() // Create the initial logic data segment if needed if (logic_data->logic_segments().size() == 0) { shared_ptr new_segment = - make_shared(*logic_data.get(), 1, asegment->samplerate()); + make_shared(*logic_data.get(), 0, 1, asegment->samplerate()); logic_data->push_segment(new_segment); } @@ -582,8 +588,8 @@ void SignalBase::conversion_thread_proc() return; } - shared_ptr new_segment = - make_shared(*logic_data.get(), 1, asegment->samplerate()); + shared_ptr new_segment = make_shared( + *logic_data.get(), segment_id, 1, asegment->samplerate()); logic_data->push_segment(new_segment); lsegment = logic_data->logic_segments().back().get();