]> sigrok.org Git - pulseview.git/blobdiff - pv/data/decodesignal.cpp
Adjust signal to changes made in 7f894d958
[pulseview.git] / pv / data / decodesignal.cpp
index eb7a0d3b78557f413ba10a57fdf477681a13c75f..5fbc8b6ca630bab38093f61f4a3e230feea366d2 100644 (file)
@@ -978,6 +978,8 @@ void DecodeSignal::decode_proc()
 
 void DecodeSignal::start_srd_session()
 {
+       uint64_t samplerate;
+
        if (srd_session_)
                stop_srd_session();
 
@@ -993,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;
                }
 
@@ -1003,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);
@@ -1035,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()));
        }
 }