X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=pv%2Fdata%2Fmathsignal.cpp;h=d9ba5bc369440e3ae051cc4ebecf517338d37484;hb=516b0c4163547a969da7686702c043e7e0335419;hp=20a41a4cc814c9b861836da1b1395a6df8befead;hpb=3f1f6295935c875373d33cd23b0c8663a6788103;p=pulseview.git diff --git a/pv/data/mathsignal.cpp b/pv/data/mathsignal.cpp index 20a41a4c..d9ba5bc3 100644 --- a/pv/data/mathsignal.cpp +++ b/pv/data/mathsignal.cpp @@ -23,6 +23,7 @@ #include "mathsignal.hpp" +#include #include #include #include @@ -90,10 +91,11 @@ MathSignal::MathSignal(pv::Session &session) : exprtk_parser_(nullptr), fnc_sig_sample_(nullptr) { - set_name(QString(tr("Math%1")).arg(session_.get_next_signal_index(MathChannel))); + uint32_t sig_idx = session_.get_next_signal_index(MathChannel); + set_name(QString(tr("Math%1")).arg(sig_idx)); + set_color(AnalogSignalColors[(sig_idx - 1) % countof(AnalogSignalColors)]); - shared_ptr data(new data::Analog()); - set_data(data); + set_data(std::make_shared()); connect(&session_, SIGNAL(capture_state_changed(int)), this, SLOT(on_capture_state_changed(int))); @@ -338,7 +340,7 @@ void MathSignal::generation_proc() if (gen_interrupt_) return; - shared_ptr analog = dynamic_pointer_cast(data_); + shared_ptr analog = analog_data(); // Create initial analog segment shared_ptr output_segment = @@ -375,6 +377,8 @@ void MathSignal::generation_proc() if (samples_to_process == 0) { if (segment_id < session_.get_highest_segment_id()) { + analog->analog_segments().back()->set_complete(); + // Process next segment segment_id++; @@ -440,6 +444,11 @@ void MathSignal::on_capture_state_changed(int state) { if (state == Session::Running) begin_generation(); + + if (state == Session::Stopped) { + shared_ptr analog = analog_data(); + analog->analog_segments().back()->set_complete(); + } } void MathSignal::on_data_received()