]> sigrok.org Git - pulseview.git/blobdiff - pv/data/decodesignal.cpp
Adjust signal to changes made in 7f894d958
[pulseview.git] / pv / data / decodesignal.cpp
index 1eff9119f319de72fb1bfde4d1f13ec93e7228d6..5fbc8b6ca630bab38093f61f4a3e230feea366d2 100644 (file)
@@ -807,7 +807,8 @@ void DecodeSignal::logic_mux_proc()
 
        // Create initial logic mux segment
        shared_ptr<LogicSegment> output_segment =
-               make_shared<LogicSegment>(*logic_mux_data_, logic_mux_unit_size_, 0);
+               make_shared<LogicSegment>(*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<LogicSegment>(*logic_mux_data_, logic_mux_unit_size_, 0);
+                                       make_shared<LogicSegment>(*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()));
        }
 }