X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=pv%2Fdata%2Fdecodesignal.cpp;h=5fbc8b6ca630bab38093f61f4a3e230feea366d2;hb=b10b58f40fd9c71f1a8b020077ecda65cebc578c;hp=1eff9119f319de72fb1bfde4d1f13ec93e7228d6;hpb=65efd0258bc6a70806f7c832a32ac74ce489fa52;p=pulseview.git diff --git a/pv/data/decodesignal.cpp b/pv/data/decodesignal.cpp index 1eff911..5fbc8b6 100644 --- a/pv/data/decodesignal.cpp +++ b/pv/data/decodesignal.cpp @@ -807,7 +807,8 @@ void DecodeSignal::logic_mux_proc() // Create initial logic mux segment shared_ptr output_segment = - make_shared(*logic_mux_data_, logic_mux_unit_size_, 0); + make_shared(*logic_mux_data_, segment_id, + logic_mux_unit_size_, 0); logic_mux_data_->push_segment(output_segment); output_segment->set_samplerate(get_input_samplerate(0)); @@ -847,7 +848,8 @@ void DecodeSignal::logic_mux_proc() segment_id++; output_segment = - make_shared(*logic_mux_data_, logic_mux_unit_size_, 0); + make_shared(*logic_mux_data_, segment_id, + logic_mux_unit_size_, 0); logic_mux_data_->push_segment(output_segment); output_segment->set_samplerate(get_input_samplerate(segment_id)); @@ -976,6 +978,8 @@ void DecodeSignal::decode_proc() void DecodeSignal::start_srd_session() { + uint64_t samplerate; + if (srd_session_) stop_srd_session(); @@ -991,6 +995,7 @@ void DecodeSignal::start_srd_session() if (!di) { error_message_ = tr("Failed to create decoder instance"); srd_session_destroy(srd_session_); + srd_session_ = nullptr; return; } @@ -1001,8 +1006,10 @@ void DecodeSignal::start_srd_session() } // Start the session - srd_session_metadata_set(srd_session_, SRD_CONF_SAMPLERATE, - g_variant_new_uint64(segments_.at(current_segment_id_).samplerate)); + samplerate = segments_.at(current_segment_id_).samplerate; + if (samplerate) + srd_session_metadata_set(srd_session_, SRD_CONF_SAMPLERATE, + g_variant_new_uint64(samplerate)); srd_pd_output_callback_add(srd_session_, SRD_OUTPUT_ANN, DecodeSignal::annotation_callback, this); @@ -1033,7 +1040,7 @@ void DecodeSignal::connect_input_notifiers() const data::SignalBase *signal = ch.assigned_signal; connect(signal, SIGNAL(samples_cleared()), this, SLOT(on_data_cleared())); - connect(signal, SIGNAL(samples_added(QObject*, uint64_t, uint64_t)), + connect(signal, SIGNAL(samples_added(uint64_t, uint64_t, uint64_t)), this, SLOT(on_data_received())); } }